首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SQL*Plus接受命令中使用bind变量值作为提示符

如何在SQL*Plus接受命令中使用bind变量值作为提示符
EN

Stack Overflow用户
提问于 2016-03-17 09:02:55
回答 2查看 4.1K关注 0票数 0

我希望在SQL*Plus脚本中使用bind变量值作为输入提示符。以下是我尝试过的:

1)我将绑定变量定义如下

代码语言:javascript
复制
SQL>var prompt varchar2(100)

),并使用PL/SQL为其赋值。

代码语言:javascript
复制
SQL>exec select 'your name' into :prompt from dual

3)现在我可以打印或选择bind变量值如下:

代码语言:javascript
复制
SQL>select :prompt from dual;

:PROMPT
------------------------------------
your name


SQL>print prompt

PROMPT
------------------------------------
your name

4)现在我想让“您的名字”显示为“接受提示”,但我不知道如何做到这一点:

代码语言:javascript
复制
SQL>accept input prompt 'prompt'
prompt

SQL>accept input prompt ':prompt'
:prompt

5)我是否能够将bind值赋值给替换变量,可以这样做:

代码语言:javascript
复制
SQL>define prompt = 'your name subst'

SQL>accept input prompt '&prompt.>'
your name subst>Bob

SQL>def input
DEFINE INPUT           = "Bob" (CHAR)

我认为可以这样做的唯一方法是将SPOOLing放入temp.sql文件并使用@temp.sql运行此文件,但这似乎是一次可怕的攻击。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-17 09:18:08

您可以在查询中使用 syntax,但除非从脚本运行(因此set termout off生效),否则将获得额外的空行:

代码语言:javascript
复制
SQL> var prompt varchar2(100)
SQL> exec select 'your name' into :prompt from dual

PL/SQL procedure successfully completed.

SQL> set feedback off
SQL> column o_prompt new_value n_prompt noprint
SQL> select :prompt as o_prompt from dual;



SQL> accept input prompt '&n_prompt.>'
your name>Bob
SQL> def input
DEFINE INPUT           = "Bob" (CHAR)

我不认为有任何方法可以直接从bind变量中定义替换变量,或者在纯客户端语句中使用bind变量,比如定义、接受等(打印除外,它是客户机命令,但为此目的而存在)。

当然,如果您正在这样做,那么您实际上不需要绑定变量,您可以直接使用以下方法来完成:

代码语言:javascript
复制
SQL> set feedback off
SQL> column o_prompt new_value n_prompt noprint
SQL> select 'your name' as o_prompt from dual;



SQL> accept input prompt '&n_prompt.>'
your name>Bob
SQL> def input
DEFINE INPUT           = "Bob" (CHAR)
票数 1
EN

Stack Overflow用户

发布于 2016-03-18 04:33:43

用科尔..。正如前面提到的NEW_VALUE。

从我对SQL*Plus变量2的全面讨论来看:

代码语言:javascript
复制
SQL> variable mybv varchar2(14)
SQL> begin
  2    /* ... */
  3    :mybv := 'report.log';
  4  end;
  5  /

使用查询将绑定变量的值传递给新的替换变量"nv“:

代码语言:javascript
复制
SQL> column mybvcol new_value nv noprint
SQL> select :mybv mybvcol from dual;

现在可以在假脱机命令中使用替换变量:

代码语言:javascript
复制
SQL> spool &nv

执行SPOOL命令时,就好像您键入了

代码语言:javascript
复制
SQL> spool report.log
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36055827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档