oracle procédure renvoie entier
Dans oracle, je veux créer une supprimer la procédure stockée qui renvoie un entier basé sur le résultat de la suppression.
c'est ce que j'ai jusqu'à présent.
create or replace
PROCEDURE Testing
(
iKey IN VARCHAR2
)
AS
BEGIN
delete from MyTable WHERE
TheKey = iKey;
END Testing;
j'ai essayé de mettre RETOURNE un ENTIER, mais la procédure stockée ne compile pas.
OriginalL'auteur shaunf | 2008-11-04
Vous devez vous connecter pour publier un commentaire.
Utiliser une fonction implicite SQL curseur pour déterminer le nombre de lignes supprimées
Qui devrait fonctionner
c'est comme il se doit, la fonction est destinée à invoquée à partir de PL/SQL pas plaine SQL
OriginalL'auteur stjohnroe
Une procédure ne retourne pas de valeur. Une fonction retourne une valeur, mais vous ne devriez pas faire DML dans une fonction (sinon vous ne pouvez pas faire des choses comme référence à la fonction dans une instruction SQL, vous confondez l'autorisation des subventions, car, normalement, Administrateurs de bases de données voulez être en mesure de subvention en lecture seule aux utilisateurs l'accès à toutes les fonctions de sorte que les utilisateurs sont en train de faire des calculs de façon constante, etc.).
Vous pouvez ajouter un paramètre à la procédure de retour de l'état. Si le "succès" signifie qu'une ou plusieurs lignes ont été mises à jour, vous pouvez utiliser SQL%du nombre de lignes à obtenir le nombre de lignes modifiées par l'avant de l'instruction SQL et l'utiliser pour remplir le paramètre de retour, c'est à dire
Bien sûr, à partir d'un code général de la clarté point de vue, je suis dubitatif sur les paramètres qui semblent être d'essayer de renvoyer un code d'état. Vous êtes en général beaucoup mieux servi par l'hypothèse de la réussite et de lever des exceptions en cas d'erreur.
OriginalL'auteur Justin Cave
Vous pouvez utiliser une procédure stockée pour renvoyer les résultats.
Pour appeler la procédure d'utiliser quelque chose comme:
OriginalL'auteur user34850
Vous êtes probablement à la recherche d'une fonction à la place.
Remarque: Où je travaille, nous mettons généralement de fonctions à l'intérieur d'un sql package.
C'est assez cool. N'en sais rien. C'est définitivement mieux.
OriginalL'auteur Jacob Schoen
La
SQL%ROWCOUNT
ne retournera une valeur immédiatement après un DML sa valeur sera remise à zéro si un autre DML est exécutée.Pour contourner le problème, comme je l'ai été l'exécution supprime dans une boucle, j'ai lancé la commande suivante après la dml:
Assurez-vous de déclarer et initialiser
row_count := 0;
OriginalL'auteur PG08 de Spurs