Avatar billede damon Nybegynder
09. november 2006 - 09:38 Der er 11 kommentarer

Tilføje strenge

Jeg prøver - i min PL/SQL procedure - at tilføje nogle variabler som jeg senere hen bruger som primærnøgle til en insert.

(vNummer, systemnr og KODE er alle sammen varchar2)
dog indeholder systemnr og kode kun numeriske værdier!
vNummer := rec.SYSTEMNR + '-' + rec.KODE;

Fejlen jeg får:

ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at "PFU6000.ETL_PG", line 107
ORA-06512: at line 2

hvordan får jeg added alle informationerne til en streng?
Avatar billede pgroen Nybegynder
09. november 2006 - 09:49 #1
Hvad er det egentlig du vil opnå?

- Hvis vNummer skal være en tekststreng i stil med '100-5',
skal du skrive:
  vNummer := rec.SYSTEMNR || '-' || rec.KODE;

-Hvis vNummer derimod skal være differencen, fx '95',
skal du skrive:
  vNummer := rec.SYSTEMNR - rec.KODE;

I øvrigt behøver jeg vel ikke fortælle dig, at det er noget gevaldigt rod at jonglere med numeriske værdier i tekststrenge... ;-)
Avatar billede damon Nybegynder
09. november 2006 - 10:01 #2
vNummer skal være en tekststreng i stil med 100-5
problemet er at hvis jeg gør som du skriver
vNummer := rec.SYSTEMNR || '-' || rec.KODE;
så skriver den Numeric og Value error: Character to number conversion error
Avatar billede damon Nybegynder
09. november 2006 - 10:02 #3
Det er som om at hvis jeg putter en numerisk værdi i min varchar2 variabel så opfører den sig som om det var en numerisk variabel..
Avatar billede hgc Nybegynder
09. november 2006 - 10:31 #4
Hvis alle 3 felter er varchar2 kan
vNummer := rec.SYSTEMNR || '-' || rec.KODE;
ikke give Character to number conversion error
Avatar billede damon Nybegynder
09. november 2006 - 10:37 #5
Column Name    ID    Pk    Null?    Data Type    Default

KODE    4        Y    VARCHAR2 (10)   
SYSTEMNR    1        Y    VARCHAR2 (4)   

Det er de altså, men der er numeriske værdier i
Avatar billede hgc Nybegynder
09. november 2006 - 10:46 #6
Det var nok mest vNummer jeg havde mistanke til
Avatar billede damon Nybegynder
09. november 2006 - 10:50 #7
Den er deklareret sådanne
vNummer VARCHAR2(10);
Avatar billede pgroen Nybegynder
09. november 2006 - 11:04 #8
Så burde vNummer vel være mindst varchar2(15) ?

- Man får også en ORA-06502, hvis strengen er for kort...
Avatar billede damon Nybegynder
09. november 2006 - 11:18 #9
Ja selvfølgelig, hvor er jeg dog DUM haha. Tusinde tak pgroen
Avatar billede hgc Nybegynder
09. november 2006 - 11:19 #10
Ja, men man får ikke en Character to number conversion error med mindre der implicit eller explicit sker en konvertering fra varchar2 til number.
Derimod vil du helt præcist få den nævnte fejl hvis vNummer er af typen number
Avatar billede pgroen Nybegynder
17. oktober 2007 - 12:56 #11
Lukker vi ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Socialpædagogernes Landsforbund

Specialkonsulent til digitalisering

Udviklings- og Forenklingsstyrelsen

Specialist til leverandørtilsyn i Sikkerhed

Cognizant Technology Solutions Denmark ApS

Service Line Specialist – EPS – SAP