【问题标题】:accessing a bind variable in sqlplus访问 sqlplus 中的绑定变量
【发布时间】:2010-08-03 19:17:56
【问题描述】:

在下面的例子中,

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 块内访问recordId,但是有没有办法在不在 pl/sql 块中的 sql 语句中访问recordId? (如最后一行)。

【问题讨论】:

  • 为什么要在匿名 PLSQL 块范围之外进行更多操作?
  • 您也可以在 SQL*Plus 中使用绑定变量,仍然是 :recordId& 版本会提示输入值,与variable 版本没有直接关系。不完全确定你为什么要像这样混搭。

标签: sql plsql sqlplus


【解决方案1】:

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

variable recordId number;

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

PRINT recordid;

SELECT * 
FROM someothertable 
WHERE recordkey = :recordId;

为绑定变量赋值的更常见的方法是使用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;

【讨论】:

    猜你喜欢
    • 2011-06-25
    • 2012-05-07
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-06
    • 1970-01-01
    相关资源
    最近更新 更多