0

我有一个用户表,其中包含 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;
4

1 回答 1

0

请试试这个

SELECT  type_u(u.id,u.uname,u.pwd) BULK COLLECT INTO u_tbl FROM user_table u;
于 2020-11-23T12:39:03.453 回答