comment appeler une procédure stockée à partir d'une autre procédure stockée oracle
J'ai déjà une procédure stockée qui prend 2 paramètres et retourne un oracle curseur. Le curseur contient environ de 30 à 60 lignes de données.
Je tiens à le pré-existante de la procédure stockée dans une autre procédure stockée comme un tableau..., fondamentalement, je veux appeler le pré-existante de la procédure stockée et de voir si les lignes retournées contiennent une valeur particulière.
Par exemple:
SP 1 = get_data_1 (returns oracle cursor)
SP 2 = get_data_2
dans get_data_2
select count(*) from get_data_1 (pass_input_parms) A where A.ID = '12345'
Conceptuel, il semble comme une chose banale à faire pour moi, cependant, d'être de nouveau à l'oracle du monde, je ne sais pas comment faire usage de préexistante procédures stockées qui renvoient à des curseurs.
Comment puis-je faire?
OriginalL'auteur Reeth | 2010-11-11
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas réutiliser un REF CURSOR de get_data_1 dans une autre instruction SQL parce que c'est juste un pointeur vers un descripteur d'instruction. Le curseur lui-même ne contient pas de données.
Vous pourriez faire quelque chose comme
Comme vous pouvez l'imaginer, cependant, cela a tendance à se faire vieux relativement rapidement. Compte tenu de cela, il a tendance à ne pas être commun dans Oracle d'avoir des procédures stockées retour CURSEUR REF paramètres sauf dans le cas où vous retournez un fini de vue des données d'une application client. Si il y avait une vision partagée, par exemple, que les deux GET_DATA_1 et GET_DATA_2 pourrait requête plutôt que d'avoir GET_DATA_2 appel GET_DATA_1, qui permettrait de simplifier le programme. Si GET_DATA_1 était un pipeline de la table de fonction plutôt qu'une procédure qui a renvoyé un REF CURSOR, alors il serait beaucoup plus facile d'appeler GET_DATA_1 de GET_DATA_2.
Si vous souhaitez commencer avec pipeline fonctions de table (à l'aide de l'SCOTT schéma)
ajout d'une rapide démonstration de pipeline à l'aide de la table de fonctions.
OriginalL'auteur Justin Cave
À ce stade, vous pourriez aussi bien définir un nouveau package et d'apprendre comment utiliser le curseur de boucles pour faire face à cela, il vous donnera plus de contrôle par programmation. PL/SQL est ce que vous devez rechercher.
OriginalL'auteur vaskin