在 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 中声明和使用变量的主要内容,如果未能解决你的问题,请参考以下文章

Delphi 如何在子窗口使用父窗口声明的变量和控件

在 PIG 中声明变量和模式

在触发器中声明和使用变量

js中要声明变量吗?

在C语言中声明和定义的区别?

如何在 Hive SQL 中声明和使用变量?