简体   繁体   English

PL/SQL Bulk collect not enough values 错误

[英]PL/SQL Bulk collect not enough values error

I have a users-table with values id, uname, pwd, email and more.我有一个包含 id、uname、pwd、email 等值的用户表。 Now i wanna create a nested table with only some of these values(id, uname, pwd - but no 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;

now i want to fill this nested table with the data (id,uname,pwd) of the users table.现在我想用用户表的数据(id、uname、pwd)填充这个嵌套表。 I tried to use bulk collect for that:我尝试为此使用批量收集:

SELECT  u.id,u.uname,u.pwd BULK COLLECT INTO u_tbl FROM user_table u;

But i keep getting the error "not enough values".但我不断收到错误“没有足够的价值”。 What is the error in that select statement?该 select 语句中的错误是什么? Thanks in advance!提前致谢!

Full Code:完整代码:

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;

请试试这个

SELECT  type_u(u.id,u.uname,u.pwd) BULK COLLECT INTO u_tbl FROM user_table u;

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 PL SQL 批量收集 fetchall 未完成 - PL SQL bulk collect fetchall not completing Function Oracle PL SQL 批量收集错误 PLS-00382:表达式类型错误 - Function Oracle PL SQL bulk collect error PLS-00382: expression is of wrong type PL SQL BULK COLLECT SQL命令未结束属性 - PL Sql BULK COLLECT SQL command not property ended 性能问题-PL / SQL使用大容量收集将光标移到记录表 - Performance issue - PL/SQL fetch cursor to table of records with bulk collect 如何在 Pl/SQl 中使用批量收集和插入 - How do I use bulk collect and insert in Pl/SQl 在PL / SQL中使用批量收集到表对象类型中 - Using Bulk collect in PL/SQL into table object type 在 pl/sql 中使用 Bulk collect/FORALL 转换 Merge 子句 - Converting Merge clause with Bulk collect/FORALL in pl/sql 创建通用 PL SQL 过程以动态记录批量收集错误 - Create a generic PL SQL procedure to log Bulk Collect errors dynamically ORA-00947 当 UPDATE 返回 BULK COLLECT INTO 用户创建的 TYPE TABLE 时出现“没有足够的值” - ORA-00947 “not enough values” when UPDATE returning BULK COLLECT INTO user created TYPE TABLE 在PL SQL中,我想通过使用BULK COLLECT和FORALL来重构带插入的for循环 - In PL SQL I want to refactor this for loop with inserts, by using BULK COLLECT and FORALL
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM