web-dev-qa-db-fra.com

Comment exécuter une procédure stockée dans Oracle SQL Developer?

J'essaie d'exécuter cette procédure stockée

DECLARE
  P_TICKER_SERIAL VARCHAR2(200);
  P_SECTOR_CODE   VARCHAR2(200);
  P_SOURCE_ID     VARCHAR2(200);
  P_COUNTRY_CODE  VARCHAR2(200);
  P_FILTER_TYPE   NUMBER;
  CUR_OUT         SYS_REFCURSOR;
  dbUserTable     DBUSER%ROWTYPE;
BEGIN
  P_TICKER_SERIAL :='14232';
  P_SECTOR_CODE   := '15';
  P_SOURCE_ID     := 'TDWL';
  P_COUNTRY_CODE  := 'SA';
  P_FILTER_TYPE   := 1;

  PKG_name.GET_user(
    P_TICKER_SERIAL => P_TICKER_SERIAL,
    P_SECTOR_CODE   => P_SECTOR_CODE,
    P_SOURCE_ID     => P_SOURCE_ID,
    P_COUNTRY_CODE  => P_COUNTRY_CODE,
    P_FILTER_TYPE   => P_FILTER_TYPE,
    CUR_OUT         => CUR_OUT
  );
  open CUR_OUT;
  LOOP
    FETCH CUR_OUT INTO dbUserTable;
    dbms_output.put_line(dbUserTable.email);
  END LOOP;
  CLOSE CUR_OUT;
END;
 /

Mais ça me donne cette erreur

Error report:
ORA-06550: line 8, column 15:
PLS-00201: identifier 'DBUSER' must be declared
ORA-06550: line 8, column 15:
PL/SQL: Item ignored
ORA-06550: line 24, column 2:
PLS-00382: expression is of wrong type
ORA-06550: line 24, column 2:
PL/SQL: SQL Statement ignored
ORA-06550: line 26, column 24:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 26, column 5:
PL/SQL: SQL Statement ignored
ORA-06550: line 27, column 28:
PLS-00320: the declaration of the type of this expression is incomplete or malformed
ORA-06550: line 27, column 7:
PL/SQL: Statement ignored
06550. 00000 -  "line %s, column %s:\n%s"
*Cause:    Usually a PL/SQL compilation error.
*Action:

Quelqu'un sait ce qui ne va pas? Merci.

28
Samy Louize Hanna

Essayez d'exécuter la procédure comme ça,

var c refcursor;
execute pkg_name.get_user('14232', '15', 'TDWL', 'SA', 1, :c);
print c;
46
Dba

Considérez que vous avez créé une procédure comme ci-dessous.

CREATE OR REPLACE PROCEDURE GET_FULL_NAME like
(
  FIRST_NAME IN VARCHAR2, 
  LAST_NAME IN VARCHAR2,
  FULL_NAME OUT VARCHAR2 
) IS 
BEGIN
  FULL_NAME:= FIRST_NAME || ' ' || LAST_NAME;
END GET_FULL_NAME;

Dans Oracle SQL Developer, vous pouvez exécuter cette procédure de deux manières.

1. Utilisation de la feuille de calcul SQL

Créez une feuille de travail SQL et écrivez un bloc anonyme PL/SQL comme celui-ci, puis appuyez sur f5.

DECLARE
  FULL_NAME Varchar2(50);
BEGIN
  GET_FULL_NAME('Foo', 'Bar', FULL_NAME);
  Dbms_Output.Put_Line('Full name is: ' || FULL_NAME);
END;

2. Utilisation des contrôles de l'interface graphique

  • Développer Procédures

  • Faites un clic droit sur la procédure que vous avez créée et cliquez Exécuter

  • Dans la fenêtre qui apparaît, remplissez les paramètres et cliquez sur OK .

À votre santé!

6
dheeran