PL/SQL anonyme bloc de tester une procédure
pL/SQL PROCÉDURE
C'est le code d'une procédure qui prend le terme,lineno,nom de composant d'identification de l'élève,le score d'entrée et les processus de l'étudiant score.
La procédure devrait ajouter le score dans les scores de la table si il n'y a pas d'exceptions.
CODE
CREATE OR REPLACE PROCEDURE score_details
(aterm IN scores.Term%type,
alineno IN scores.Lineno%type,
acompname IN scores.Compname%type,
asid IN scores.sid%type,
apoints IN scores.points%type)
AS sterm scores.Term%type;
slineno scores.Lineno%type;
scompname scores.compname%type;
ssid scores.sid%type;
spoints scores.points%type;
BEGIN
SELECT term,lineno,compname,sid,points
INTO sterm,slineno,scompname,ssid,spoints
FROM scores
WHERE aterm=term AND alineno=Lineno AND acompname=compname AND asid=sid AND apoints=points;
EXCEPTION
when no_data_found THEN
dbms_output.put_line('Invalid details');
BLOC ANONYME
Ci-dessous est le code pour le bloc anonyme pour tester la procédure ci-dessus.
Je ne suis pas en mesure d'obtenir le résultat correct.Merci de m'aider avec le code.
ACCEPT prompt 'pterm','plineno','pcompname','psid','ppoints'
DECLARE pterm scores.Term%type;
plineno scores.Lineno%type;
pcompname scores.Compname%type;
psid scores.sid%type;
ppoints scores.points%type;
BEGIN
score_details(pterm,plineno,pcompname,psid,ppoints);
END
Vous devez vous connecter pour publier un commentaire.
Je vais supposer que vous avez intentionnellement manqué la plupart des corps de votre procédure stockée, comme il récupère certaines valeurs d'un tableau dans certaines des variables locales, puis ne fait rien avec ces valeurs.
Je suppose que vous vous demandez pourquoi les valeurs que vous avez saisies dans le
ACCEPT
ligne de ne pas le faire dans l'appel de procédure stockée.ACCEPT
est un SQL*Plus relevé de compte que vous pouvez utiliser pour définir des variables de substitution. L'exemple suivant crée une variable de substitution nommécolour
et affiche le résultat. La ligneYellow
a été tapé par moi:Vous pouvez également fournir une invite à l'utilisateur de préciser ce que vous me demandez:
et vous pouvez également utiliser des variables de substitution SQL:
Il semble qu'il ya deux choses pas tout à fait à droite avec votre PL/SQL bloc en ce moment:
Votre
ACCEPT
déclaration n'est pas de travail. Vous n'avez pas encore reçu l'ordre des parties de droite (si elle est utilisée,PROMPT
doit venir après le nom de la variable). Aussi, je ne pense pas que vous pouvez définir plus d'une variable de substitution dans un seulACCEPT
.Vous n'êtes pas à l'aide de la substitution de variables qui contiennent les valeurs saisies.
J'avais donc imaginez que vous voulez l'appeler à votre PL/SQL bloc à regarder d'un peu plus comme les suivantes:
END;
à partir du bas. Vous aurez également besoin d'ajouter une seule ligne contenant seulement un/
. SQL*Plus n'est pas assez intelligent pour savoir quand une procédure stockée extrémités, de sorte qu'il a besoin d'une ligne ne contenant qu'un/
pour laisser savoir que la procédure en cours est terminée.