如何在oracle中为记录类型编写循环

前端之家收集整理的这篇文章主要介绍了如何在oracle中为记录类型编写循环前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下声明在我的包中编译好:

包头:

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的骨架是什么?我们甚至可以通过它吗?

没有什么可循环的.

role_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;
原文链接:https://www.f2er.com/oracle/205009.html

猜你在找的Oracle相关文章