在 PL-SQL 中声明和使用变量
Posted
技术标签:
【中文标题】在 PL-SQL 中声明和使用变量【英文标题】:Declaring and using variables in PL-SQL 【发布时间】:2016-01-18 16:03:48 【问题描述】:我是 PL-SQL 的新手。我不明白为什么会收到错误“PLS-00428:此 SELECT 语句中应有 INTO 子句”
我想要完成的是创建一个变量 c_limit 并加载它的值。然后我想稍后使用该变量来过滤数据。
基本上我在演示数据库中玩耍,看看我能/不能用 PL-SQL 做什么。
代码工作到我添加了“select * from demo_orders where 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;
【问题讨论】:
你必须select * from demo_orders where CUSTOMER_ID = custID;
进入某事,就像你在第一个查询中所做的那样。看起来您无论如何都不需要此查询,因此只需注释或删除它,此 PL/SQL 块就可以工作。
【参考方案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 行数据。
【讨论】:
【参考方案2】:看起来错误来自第二个选择查询。
select * from demo_orders where CUSTOMER_ID = custID;
PL-SQL 不允许独立的 sql 选择查询信息。
http://pls-00428.ora-code.com/
你需要对第二个选择查询做一些操作
【讨论】:
以上是关于在 PL-SQL 中声明和使用变量的主要内容,如果未能解决你的问题,请参考以下文章