在SELECT语句中使用声明的变量

时间:2011-07-28 14:52:36

标签: plsql oracle10g

我正在使用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语句中正常工作,所以我不确定为什么它在这里不起作用。

2 个答案:

答案 0 :(得分:4)

正确的语法是:

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

答案 1 :(得分:3)

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

您想对查询结果做什么?将其显示在屏幕上?如果是这样,选择它到游标,迭代并使用dbms_output。