sql >> Base de Datos >  >> RDS >> Oracle

Problema de parámetro de entrada de procedimiento almacenado de Oracle - Obtuve la solución - Error tipográfico

Algunos problemas:

  1. VARHAR2 nosotros un error tipográfico y debería ser VARCHAR2 .
    • En su lugar, podría especificar los tipos de datos para hacer referencia a las columnas de la tabla correspondiente usando table_name.column_name%TYPE .
  2. El procedimiento no genera nada; debe cambiar uno de los IN parámetros a un OUT (o un IN OUT parámetro).
  3. Su consulta no especifica un nombre de tabla.
  4. Puede usar SELECT ... INTO ... en lugar de un CURSOR .

Algo como esto:

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