Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Problema de parâmetro inout do Oracle Stored Procedure - Obteve a solução - Erro de digitação


Alguns problemas:
  1. VARHAR2 nos um erro de digitação e deve ser VARCHAR2 .
    • Você pode especificar os tipos de dados para referenciar as colunas da tabela correspondentes usando table_name.column_name%TYPE .
  2. O procedimento não produz nada - você precisa alterar um dos IN parâmetros para um OUT (ou um IN OUT parâmetro).
  3. Sua consulta não especifica um nome de tabela.
  4. Você pode usar SELECT ... INTO ... em vez de um CURSOR .

Algo assim:
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;
/