Ceci est probablement une question simple pour qui connaît PL/SQL. J'ai une procédure stockée qui prend un tableau de varchar en entrée:Exécuter une sélection dans une boucle PL/SQL et retour du curseur?
TYPE MULTI is table of VARCHAR(15) index by BINARY_INTEGER;
PROCEDURE MYPROC(
SINGLE IN MULTI,
P_RESULT OUT MY_PCK.MYCURSOR,
P_SOMETHING OUT VARCHAR2,
);
Le curseur fonctionne parce que je l'ai testé dans d'autres cas, mais c'est le premier avec un paramètre de tableau.
J'ai un problème avec le corps, comment puis-je attribuer chaque valeur que je reçois de la sélection au curseur?
BEGIN
FOR i IN SINGLE.first .. SINGLE.last
LOOP
--BEGIN OPEN P_RESULT FOR this --this on left gives me error
SELECT MT.DESCR INTO P_SOMETHING
FROM MYTABLE1 MT
WHERE MT.IDS = SINGLE(i)
AND and rownum < 2;
--dbms_output.put_line(SINGLE(i)); --if i use this instead of select i get the values i send to this procedure.
END LOOP;
i essayé aussi:
SELECT MT.DESCR INTO P_RESULT but gives error
Qu'est-ce que je fais mal? Merci dans le conseil.
Quelle erreur avez-vous? – I3rutt
PLS-00428: une clause INTO est attendue dans cette instruction SELECT. Si j'utilise une clause into comme: MT.DESCR INTO P_SOMETHING où P_SOMETHING est une sortie varchar2, j'obtiens: ORA-01422: l'extraction exacte renvoie plus que le nombre de lignes demandé. Je ne sais vraiment pas comment résoudre ce problème ... –
Pour résoudre rapidement essayez d'ajouter ceci dans la clause WHERE: et rownum <2 – I3rutt