【问题标题】:Use a declared variable in a SELECT statement在 SELECT 语句中使用声明的变量
【发布时间】: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 ;-)

标签: plsql oracle10g


【解决方案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_FOUNDTOO_MANY_ROWS

【讨论】:

    【解决方案2】:

    这与您的参数无关,这是因为您将代码作为程序代码块执行,因此它不允许您选择任何内容。

    你想对查询结果做什么?显示在屏幕上?如果是这样,将其选中到游标,遍历并使用 dbms_output。

    【讨论】:

    • 我想返回该行。这将是更大的插入的一部分,然后返回插入的行类型的查询。
    • 在这种情况下,您需要将结果选择到光标中。
    猜你喜欢
    • 2023-03-11
    • 2023-03-20
    • 1970-01-01
    • 2011-03-24
    • 1970-01-01
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多