Obtenir des métadonnées de procédure stockée pour une procédure dans un package Oracle à l'aide d'ADO.NET
Je suis en train d'essayer d'obtenir la procédure stockée métadonnées (nom de la procédure,les types des paramètres,les noms de paramètres, etc) pour une procédure déclarée à l'intérieur d'un package Oracle, à l'aide de la norme ADO.NET API - DbConnection.GetSchema appel. Je suis à l'aide de l'ODP pilote.
Je vois que le Colis est répertorié dans les "Packages" et " PackageBodies les métadonnées des collections. Le paramètre de la procédure apparaît dans les "Arguments" et " ProcedureParameters collections. Je ne vois pas un moyen d'obtenir de la procédure d'information via le paquet de métadonnées. Même si la procédure n'a pas tous les paramètres il y a une ligne dans le " ProcedureParameters de la collection pour cette procédure.
Ma question: Pour obtenir la procédure de métadonnées dois-je interroger le 'ProcedureParameters de collecte et de recherche pour une inscription avec le nom du package? J'ai peut alors construire la procédure de métadonnées basé sur les informations de paramètre. Est-il plus court ou moyen plus rapide pour obtenir la même information?
source d'informationauteur alwayslearning
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr de savoir comment vous obtenez ce à l'aide de ADO.NET mais vous pouvez interroger directement la base de données pour obtenir cette information comme suit:
Une fois que vous avez exécuté la requête ci-dessus, vous aurez un ensemble de résultats qui a, entre autres choses, la PROCEDURE_NAME. Étant donné le nom du package et le PROCEDURE_NAME, vous pouvez trouver paramètre info à l'aide de la requête suivante:
De partager et de profiter.
Avec l'aide de Bob, j'ai utilisé la requête suivante pour obtenir une liste des procédures stockées définis au sein d'un package.
Cela renvoie toutes les procédures stockées pour un utilisateur particulier. Je peux alors utiliser le " ProcedureParameters de la collection pour obtenir les informations de paramètre pour eux.
REMARQUE: Ne pas interroger les SYS.DBA_PROCEDURES table. L'identification de l'utilisateur que vous utilisez pour exécuter la requête peut ne pas avoir de "sélectionner" les privilèges sur cette table.