[oracle]为什么不是我列 NEW_VALUE 准备由我的 SELECT 语句?

标签: Oracle
发布时间: 2017/4/15 19:07:19
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有以下 SQL * 加上代码︰

COLUMN x NEW_VALUE x2
BEGIN
   -- ...
   EXECUTE IMMEDIATE 'SELECT ''a'' x FROM dual';
   EXECUTE IMMEDIATE 'SELECT colname x FROM some_table WHERE (some_condition)';
   -- ...
END;

在这点,x2 是空的和已不是 NULL。 为什么不是它设置,为 'a',如果没有别的?

解决方法 1:

COLUMN是 SQL * 加上客户端构造和动态 SQL 运行在 PL/SQL 引擎,所以没有真正的连接。我不相信在那里你将文档不应用的东西。

最近我能想到的因为这的-假设你做这个要有动态 SQL 可用打算稍后在脚本中的 SQL 语句的结果 — — 改为使用绑定变量︰

var x varchar2(30);

BEGIN
    EXECUTE IMMEDIATE 'SELECT ''a'' x FROM dual' INTO :x;
END;
/

select :x from dual;

您可以使用 :x 在任何地方你会用 &x2 ,不过要记住,因为它是一个绑定变量,你不需要把它放在单引号中 (如果它是 varchar) 当你使用它; 如果你会这样做︰

select ':x' from dual;

......然后你会回来的原义字符串 :x ,不 a

编辑要添加

如果你特别需要 & 形式,你可以做进一步的步骤 (未经测试,但为什么不看不见)︰

column x2 new_value x3
select :x as x2 from dual;

......,你就会有 &x3 可用。

赞助商