我正在使用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语句中正常工作,所以我不确定为什么它在这里不起作用。
答案 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_FOUND
或TOO_MANY_ROWS
。
答案 1 :(得分:3)
这与您的参数无关,这是因为您将代码作为程序代码块执行,因此它不允许您选择任何内容。
您想对查询结果做什么?将其显示在屏幕上?如果是这样,选择它到游标,迭代并使用dbms_output。