gpt4 book ai didi

sql - 在 sqlplus 中访问绑定(bind)变量

转载 作者:行者123 更新时间:2023-12-02 07:51:49 25 4
gpt4 key购买 nike

在下面的例子中,

variable recordId number;

BEGIN
SELECT MAX(recordvalue)
INTO recordId
FROM sometable;
END;

PRINT recordid;
SELECT *
FROM someothertable
WHERE recordkey = &recordId;

最后一行的select 语句无法访问recordId 的值。我知道我可以使用 :recordId 访问 pl/sql block 内的 recordId 但是有没有办法在不在 pl/sql block 中的 sql 语句中访问 recordId ? (就像在最后一行)。

最佳答案

您也可以在 SQL*Plus 中使用绑定(bind)变量,仍然是 :recordId& 版本会提示输入一个值,与变量 版本没有直接关系。

variable recordId number;

BEGIN
SELECT MAX(recordvalue)
INTO :recordId
FROM sometable;
END;
/

PRINT recordid;

SELECT *
FROM someothertable
WHERE recordkey = :recordId;

为绑定(bind)变量赋值的稍微更常见的方法是使用 exec :recordId := value;,但是 exec 实际上只是匿名 block 的简写。

但不确定您为什么要像这样混合搭配。如果打算在后面的查询中使用一个查询的结果,您可以尝试使用 new_value 代替:

column x_val new_value y_val; -- could also noprint if you do not need to see the intermediate value

SELECT MAX(recordvalue) x_val
FROM sometable;

SELECT *
FROM someothertable
WHERE recordkey = &y_val;

关于sql - 在 sqlplus 中访问绑定(bind)变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3399999/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com