在 SELECT 语句中使用声明的变量
Posted
技术标签:
【中文标题】在 SELECT 语句中使用声明的变量【英文标题】:Use a declared variable in a SELECT statement 【发布时间】:2011-07-28 14:52:36 【问题描述】:我使用的是 Oracle 10g,需要在 SELECT 的 where 子句中使用变量;例如。
DECLARE
v_blah NUMBER;
BEGIN
v_blah := 13;
SELECT * FROM PEOPLE p WHERE p.LuckyNumber = v_blah;
END;
但我收到一个错误提示
PLS-00428:此 SELECT 语句中需要一个 INTO 子句
它似乎在 DELETE 或 INSERT 语句中工作正常,所以我不确定为什么它不能在这里工作。
【问题讨论】:
我对此深信不疑......应该可以工作:( 欢迎来到甲骨文。这不是 SQL Server ;-) 【参考方案1】:正确的语法是:
DECLARE
v_blah NUMBER := 13;
v_people_rec PEOPLE%ROWTYPE;
BEGIN
SELECT * INTO v_people_rec FROM PEOPLE p WHERE p.LuckyNumber = v_blah;
END;
select statement in PL/SQL 需要一个存储查询结果的地方。在此示例中,位置是 v_people_rec
变量。
上面的例子希望只返回一行。在其他情况下,它会抛出异常 NO_DATA_FOUND
或 TOO_MANY_ROWS
。
【讨论】:
【参考方案2】:这与您的参数无关,这是因为您将代码作为程序代码块执行,因此它不允许您选择任何内容。
你想对查询结果做什么?显示在屏幕上?如果是这样,将其选中到游标,遍历并使用 dbms_output。
【讨论】:
我想返回该行。这将是更大的插入的一部分,然后返回插入的行类型的查询。 在这种情况下,您需要将结果选择到光标中。以上是关于在 SELECT 语句中使用声明的变量的主要内容,如果未能解决你的问题,请参考以下文章