访问sqlplus中的绑定变量

时间:2010-08-03 19:17:56

标签: sql plsql sqlplus

在以下示例中,

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? (就像在最后一行)。

1 个答案:

答案 0 :(得分:7)

您也可以在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;