我有以下声明在我的包中编译好:
包头:
TYPE role_user_type IS RECORD ( ROLE_ID some_table.ROLE_ID%TYPE,SUBGROUP some_table.USER_ID%TYPE );
身体:
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%'
循环通过ROLE_USER_REC的骨架是什么?我们甚至可以通过它吗?
没有什么可循环的.
原文链接:https://www.f2er.com/oracle/205009.htmlrole_user_type定义了一条记录,您可以通过以下方式访问:
dbms_output.put_line( role_user_rec.role_id || ',' || role_user_rec.subgroup );
只要返回多行,SELECT … INTO就会失败.
如果您需要存储其中几条记录,可以使用nested tables之类的
TYPE role_user_tab IS TABLE of role_user_type:
例:
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;