J'ai la déclaration suivante qui compile correctement dans mon colis:
en-tête d'emballage: p> Corps: p> ROLE_USER_REC MY_PACKAGE.ROLE_USER_TYPE;
SELECT B.USER_ID, B.ROLE INTO ROLE_USER_REC
FROM some_table where user_id like 'M%'
3 Réponses :
Il n'y a rien à boucle.
Votre Si vous devez stocker plusieurs de ces enregistrements, vous pouvez utiliser Tables imbriquées comme Exemple strong>: p> role_user_type code> définit un seul enregistrement, que vous pouvez accéder via: p>
Sélectionnez ... dans code> échouera dès que plus d'une ligne est renvoyé. P>
Type Type Role_user_Tab est Tableau de rôle_User_Type CODE>: P>
DECLARE
TYPE role_user_type IS RECORD (
ROLE_ID VARCHAR2(10),
SUBGROUP VARCHAR2(10)
);
TYPE role_user_tab IS TABLE OF role_user_type;
role_user_rec role_user_tab;
BEGIN
SELECT 'A', 'B'
BULK COLLECT INTO role_user_rec
FROM dual;
FOR i IN role_user_rec.FIRST .. role_user_rec.LAST LOOP
dbms_output.put_line( role_user_rec(i).role_id || ', ' || role_user_rec(i).subgroup );
END LOOP;
END;
Vous pouvez utiliser un curseur pour boucle:
DECLARE CURSOR C IS SELECT B.USER_ID, B.ROLE FROM some_table where user_id like 'M%'; BEGIN FOR role_user_type IN C LOOP dbms_output.put_line('User ID: '||role_user_type.user_id); etc... END LOOP; END;
Vous pouvez utiliser des curseurs pour ce