declare
TYPE A_TB_TYPE is table of emp.name%type;
A_TB A_TB_TYPE;
begin
select name BULK COLLECT INTO A_TB from emp;
for i in 1 .. A_TB.count loop
dbms_output.put_line(A_TB(i));
end loop;
end;
我这样子为什么也可以用,我没有初试化A_TB这个集合,但是教程上写必须初始化才能使用。
oracle嵌套表初始化。
答案:2 悬赏:0 手机版
解决时间 2021-03-16 05:07
- 提问者网友:欲望失宠
- 2021-03-15 09:42
最佳答案
- 五星知识达人网友:酒醒三更
- 2021-03-15 10:55
你好。初始化是必须的,否则就类似于集合是NULL的,只是初始化的方式不同。
-- 1 直接赋值的显示初始化
declare
TYPE A_TB_TYPE is table of emp.name%type;
A_TB A_TB_TYPE:=new A_TB_TYPE('123','456');
begin
dbms_output.put_line(A_TB(1));
dbms_output.put_line(A_TB(2));
end;
-- 2 使用SELECt INTO的隐式初始化(使用 bulk collect )
declare
TYPE A_TB_TYPE is table of emp.name%type;
A_TB A_TB_TYPE;
begin
select name bulk collect INTO A_TB from emp;
for i in 1 .. 10 loop
dbms_output.put_line(A_TB(i));
end loop;
end;
使用FETCH也可以实现类似第2种的效果。
-- 1 直接赋值的显示初始化
declare
TYPE A_TB_TYPE is table of emp.name%type;
A_TB A_TB_TYPE:=new A_TB_TYPE('123','456');
begin
dbms_output.put_line(A_TB(1));
dbms_output.put_line(A_TB(2));
end;
-- 2 使用SELECt INTO的隐式初始化(使用 bulk collect )
declare
TYPE A_TB_TYPE is table of emp.name%type;
A_TB A_TB_TYPE;
begin
select name bulk collect INTO A_TB from emp;
for i in 1 .. 10 loop
dbms_output.put_line(A_TB(i));
end loop;
end;
使用FETCH也可以实现类似第2种的效果。
全部回答
- 1楼网友:独行浪子会拥风
- 2021-03-15 11:27
错误就是你没有books_bookname这个type呀。
你需要先定义这个type才可以。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯