Oracle
 sql >> Base de données >  >> RDS >> Oracle

Problème de paramètre d'entrée de la procédure stockée Oracle - Vous avez la solution - Erreur de frappe

Quelques problèmes :

  1. VARHAR2 nous une faute de frappe et devrait être VARCHAR2 .
    • Vous pouvez à la place spécifier les types de données pour référencer les colonnes de table correspondantes en utilisant table_name.column_name%TYPE .
  2. La procédure ne produit rien - vous devez changer l'un des IN paramètres à un OUT (ou un IN OUT paramètre).
  3. Votre requête ne spécifie pas de nom de table.
  4. Vous pouvez utiliser SELECT ... INTO ... plutôt qu'un CURSOR .

Quelque chose comme ça :

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