在以下示例中,
variable recordId number;
BEGIN
SELECT MAX(recordvalue)
INTO recordId
FROM sometable;
END;
PRINT recordid;
SELECT *
FROM someothertable
WHERE recordkey = &recordId;
Run Code Online (Sandbox Code Playgroud)
最后一行的select语句无法访问recordId的值.我知道我可以recordId使用:recordId 访问pl/sql块内部但是有没有办法recordId在不在pl/sql块中的sql语句中访问?(就像在最后一行).
您也可以在SQL*Plus中使用绑定变量:recordId.该&版本将提示输入值,并且与该variable版本没有直接关系.
variable recordId number;
BEGIN
SELECT MAX(recordvalue)
INTO :recordId
FROM sometable;
END;
/
PRINT recordid;
SELECT *
FROM someothertable
WHERE recordkey = :recordId;
Run Code Online (Sandbox Code Playgroud)
为绑定变量赋值的稍微更常见的方法是exec :recordId := value;,但exec实际上只是匿名块的简写.
不知道你为什么要这样混合和匹配.如果打算在以后使用一个查询的结果,您可以尝试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;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11537 次 |
| 最近记录: |