Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle Stored Procedure inout-Parameterproblem – Lösung gefunden – Tippfehler

Einige Probleme:

  1. VARHAR2 uns einen Tippfehler und sollte VARCHAR2 sein .
    • Sie könnten stattdessen die Datentypen spezifizieren, um die entsprechenden Tabellenspalten zu referenzieren, indem Sie table_name.column_name%TYPE verwenden .
  2. Die Prozedur gibt nichts aus - Sie müssen einen der IN ändern Parameter zu einem OUT (oder ein IN OUT Parameter).
  3. Ihre Abfrage gibt keinen Tabellennamen an.
  4. Sie können SELECT ... INTO ... verwenden statt eines CURSOR .

Etwa so:

CREATE OR REPLACE PROCEDURE FIRSTPROC (
  ID1 IN  table_name.id1val%TYPE,
  ID2 OUT table_name.id2val%TYPE
)
AS
BEGIN
  DBMS_OUTPUT.PUT_LINE(ID1);
  SELECT id2val
  INTO   ID2
  FROM   table_name
  WHERE  id1val = ID1;
EXCEPTION
  WHEN NO_DATA_FOUND THEN
    ID2 := 0; -- Or you could use NULL
  WHEN TOO_MANY_ROWS THEN
    ID2 := 0; -- Or you could use NULL
END;
/