sql >> Databasteknik >  >> RDS >> Oracle

Oracle Stored Procedure inout parameter problem - Fick lösningen - Skrivfel

Några problem:

  1. VARHAR2 oss ett stavfel och bör vara VARCHAR2 .
    • Du kan istället ange datatyperna för att referera till motsvarande tabellkolumner med table_name.column_name%TYPE .
  2. Proceduren matar inte ut någonting - du måste ändra en av IN parametrar till en OUT (eller en IN OUT parameter).
  3. Din fråga anger inget tabellnamn.
  4. Du kan använda SELECT ... INTO ... snarare än en CURSOR .

Något så här:

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;
/


  1. Återställ identitetsfrö efter borttagning av poster i SQL Server

  2. SQL Server Error 110:Det finns färre kolumner i INSERT-satsen än de värden som anges i VALUES-satsen.

  3. Konvertera sträng till datetime-värde i LINQ

  4. Kan jag ange en indata sql-fil med bcp?