Avatar billede futterama Nybegynder
01. december 2004 - 08:40 Der er 2 kommentarer og
1 løsning

Exception ved forkert variabel værdi, hvordan?

Hej,

Jeg har følgende PL/SQL kode:

CREATE OR REPLACE PACKAGE BODY TestPackage IS
  /********************** Test **********************/
  PROCEDURE Test (vTest IN NUMBER) IS
  BEGIN
    htp.print('<html>');
    htp.print('<head>');
    htp.print('</head>');
    htp.print('<body bgcolor="#D3DCE1">');
    htp.print('Test nummer er:' || vTest);
    htp.print('</body>');
    htp.print('</html>');
  END;
END TestPackage;

Jeg bruger så min webbrowser til at tilgå proceduren med følgende URL:

http://minserver.dk/owa_ors/plsql/TestPackage.Test?vTest=3

Den sender værdien 3 i variablen vTest og det virker fint.

Min spørgsmål er så, at hvis man indsætter en anden værdi end lige en mumerisk værdi, f.eks:

http://minserver.dk/owa_ors/plsql/TestPackage.Test?vTest=Hej

hvordan opfanger man så denne Exception:

OWS-05101: Execution failed due to Oracle error 6502
ORA-06502: PL/SQL: numerisk fejl eller værdifejl: fejl under konvertering af tegn til tal
ORA-06512: ved linje 5

Jeg ville gerne have noget tekst og HTML-kode ind som jeg selv laver, som fortæller brugeren at de ikke har indtastet en korrekt numerisk værdi.
Avatar billede futterama Nybegynder
01. december 2004 - 08:42 #1
"mumerisk" skulle være "numerisk" - UPS :-D
Avatar billede futterama Nybegynder
01. december 2004 - 09:11 #2
Jeg har faktisk selv fundet ud af det nu. Jeg sender variablen som varchar2 og forsøger så at putte indholdet ind i en numerisk variabel, og hvis det ikke kan lade sig gøre, så kommer der en exception:

CREATE OR REPLACE PACKAGE BODY TestPackage IS
  /********************** Test **********************/
  PROCEDURE Test (vTest IN VARCHAR2) IS
    vTestVar NUMBER;
    eNotNumber EXCEPTION;
  BEGIN
    BEGIN
      vTestVar := vTest;
    EXCEPTION
      WHEN VALUE_ERROR THEN
      RAISE eNotNumber;
    END;
    htp.print('<html>');
    htp.print('<head>');
    htp.print('</head>');
    htp.print('<body bgcolor="#D3DCE1">');
    htp.print('Test nummer er:' || vTestVar);
    htp.print('</body>');
    htp.print('</html>');
  EXCEPTION
    WHEN eNotNumber THEN
    htp.print('<html>');
    htp.print('<head>');
    htp.print('</head>');
    htp.print('<body bgcolor="#D3DCE1">');
    htp.print('Fejl! ' || vTest || ' er ikke en numerisk værdi!');
    htp.print('</body>');
    htp.print('</html>');
  END;
END TestPackage;
Avatar billede futterama Nybegynder
01. december 2004 - 09:40 #3
Jeg lukker spørgsmålet :-)
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