我是PL-SQL的新手。我不明白为什么我收到错误" PLS-00428:在这个SELECT语句中需要一个INTO子句"
我想要完成的是创建一个变量c_limit并加载它的值。然后,我想稍后使用该变量来过滤数据。
基本上我在演示数据库中玩,看看我能做什么/不能用PL-SQL做什么。
代码已经达到了我已经添加"从demo_orders中选择*,其中CUSTOMER_ID = custID;"
declare
c_limit NUMBER(9,2);
custID INT;
BEGIN
custID := 6;
-- Save the credit limit
select credit_limit INTO c_limit
from demo_customers cust
where customer_id = custID;
select * from demo_orders where CUSTOMER_ID = custID;
dbms_output.Put_line(c_limit);
END;
答案 0 :(得分:1)
如果在匿名块中使用SQL SELECT语句(在PL / SQL中 - 在BEGIN和END关键字之间),则必须选择INTO,以便PL / SQL可以利用变量来保存查询中的结果。这里需要注意的是,如果要选择多个列(您使用“SELECT *”),则必须指定多个变量或记录以将查询结果插入。
例如:
SELECT 1
INTO v_dummy
FROM dual;
SELECT 1, 2
INTO v_dummy, v_dummy2
FROM dual;
值得指出的是,如果你的SELECT * FROM....
将返回多行,PL / SQL将抛出错误。您应该只期望从SELECT INTO中检索1行数据。
答案 1 :(得分:0)
看起来错误来自第二个选择查询。
select * from demo_orders where CUSTOMER_ID = custID;
PL-SQL不允许对info进行独立的sql select查询。
http://pls-00428.ora-code.com/
您需要使用第二个选择查询执行某些操作