我有一个用户表,其中包含 id、uname、pwd、email 等值。现在我想创建一个嵌套表,其中只有一些值(id、uname、pwd - 但没有电子邮件):
create or replace TYPE type_u as object(type_id number(4,0), type_uname varchar(32), type_pwd varchar(16));
create or replace TYPE u_tbl as table of type_u;
现在我想用用户表的数据(id、uname、pwd)填充这个嵌套表。我尝试为此使用批量收集:
SELECT u.id,u.uname,u.pwd BULK COLLECT INTO u_tbl FROM user_table u;
但我不断收到错误“没有足够的值”。该选择语句中的错误是什么?提前致谢!
完整代码:
create or replace TYPE type_u as object(type_id number(4,0), type_uname varchar(32), type_pwd varchar(16));
create or replace TYPE u_tbl as table of type_u;
create or replace PROCEDURE RET_STRING_TAB(o_cursor OUT SYS_REFCURSOR) IS
v_u_tbl u_tbl;
BEGIN
SELECT u.id, u.name, u.pwd BULK COLLECT INTO v_u_tbl FROM user_table u;
-- For each found User do something
FOR i IN 1 .. v_u_tbl.count
LOOP
-- do something
END LOOP;
OPEN o_cursor FOR SELECT * FROM TABLE(v_u_tbl);
END RET_STRING_TAB;