Question

Mon scénario:

  • Nom du schéma : schema1
  • Nom du package : pkg_system
  • nom de la procédure : PROC1

Maintenant, je suis en train de créer un synonymes de mon PROC1 comme ci-dessous

CREATE PUBLIC SYNONYM call_proc FOR schema1.pkg_system.proc1;

... mais il m'a donné erreur de syntaxe.

ORA-00933: SQL command not properly ended

J'ai changé le code ci-dessous:

CREATE PUBLIC SYNONYM call_proc FOR pkg_system.proc1;

Je peux créer avec succès les synonymes mais quand j'ai essayé d'exécuter la procédure stockée via le synonyme:

EXEC call_proc

... a obtenu l'erreur suivante:

ORA-06550: line 1, column 7:
PLS-00201: identifier call_proc must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored

Et j'utilisé le nom de schéma pour appeler la procédure comme schema1.call_Proc toujours eu la même erreur.

Ce que je fait de mal ici?

Était-ce utile?

La solution

Une façon de contourner cette limitation, en supposant vraiment besoin d'appeler la procédure avec un seul nom (quelle qu'en soit la raison), vous pouvez l'envelopper dans une procédure au niveau du schéma:

CREATE PROCEDURE schema1.proc1 IS
BEGIN
   pkg_system.proc1;
END;

CREATE PUBLIC SYNONYM proc1 FOR schema1.proc1;

Autres conseils

Remarque

Restriction sur la clause FOR L'objet de schéma ne peut pas être contenu dans un emballage.

En d'autres termes, vous ne pouvez pas créer un synonyme pour une procédure de package.

J'ai vu des solutions où est créé et un synonyme public créé une procédure d'emballage (non emballé) pour cela.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top