如何在替换变量中给出查询结果

How to give the result of a query in a subtitution variable

sequel 来自

此 SQL 加代码有效

define a=22; 
host powershell.exe echo &a;

22

但是如果 a 的值来自查询,它就不再起作用了。

define a=2; 
select 22 into a;
host powershell.exe echo &a;

2 instead of 22

我已经尝试过使用缓冲区,但无济于事

variable buffer varchar2;
select 22 into :buffer from dual;
define a=b;
host powershell.exe echo &a;

:b

可以使用column .. new_value ... syntax。如果你仍然想要一个绑定变量,就像你之前的问题一样,那么定义和填充你现在的变量,例如:

SQL> variable buffer varchar2(2);
SQL> exec :buffer := '22';

PL/SQL procedure successfully completed.

SQL> print buffer

BUFFER
--------------------------------
22

然后用一个新值定义该列,您稍后可以将其作为替换变量引用:

SQL> column a new_value a
SQL> select :buffer as a from dual;

A
--------------------------------
22

SQL> host powershell.exe echo &a
22

SQL> 

如果您运行这是一个脚本并且不想看到输出,您可以set termout off然后绕过那个额外的查询。

你可以查询任何东西,它不一定是绑定变量:

select 22 as a from dual;

SQL> select sysdate as a from dual;

A
---------
02-JUN-22

SQL> host powershell.exe echo &a
02-JUN-22

SQL>