在PL-SQL中声明和使用变量

时间:2016-01-18 16:03:49

标签: oracle plsql

我是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;

2 个答案:

答案 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/

您需要使用第二个选择查询执行某些操作