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

发布于 2024-11-26 22:52:58 字数 344 浏览 1 评论 0原文

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

I'm using Oracle 10g and need to use a variable in a where clause of a SELECT; eg.

DECLARE
v_blah NUMBER;
BEGIN

v_blah := 13;

SELECT * FROM PEOPLE p WHERE p.LuckyNumber = v_blah;

END;

but am getting an error saying

PLS-00428: an INTO clause is expected in this SELECT statement

It seems to work fine in a DELETE or INSERT statement, so I'm not sure why it wouldn't work here.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

注定孤独终老 2024-12-03 22:52:58

正确的语法是:

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;

PL/SQL 中的 select 语句< /a> 需要一个存储查询结果的地方。在此示例中,该位置是 v_people_rec 变量。

上面的示例期望返回恰好一行。在其他情况下,它将抛出异常NO_DATA_FOUNDTOO_MANY_ROWS

The correct syntax is:

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;

The select statement in PL/SQL requires a place where store the query result. In this example the place is v_people_rec variable.

The example above expects exactly one row to be returned. In other cases it will throw exceptions NO_DATA_FOUND or TOO_MANY_ROWS.

妞丶爷亲个 2024-12-03 22:52:58

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

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

That isn't anything to do with your parameter, it is because you're executing your code as a procedural block of code so it doesn't allow you to select to nothing.

What do you want to do with the result of the query? Display it to the screen? If so, select it to a cursor, iterate through and use dbms_output.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文