无效字符-输入参数的美元符号未解码

时间:2019-07-19 09:31:31

标签: oracle sqlplus

我在使用参数传递的某些SQL脚本中遇到了问题。

我这样调用一个脚本:

DEFINE sowner = "SOWNER"
DEFINE auser = "AUSER"
DEFINE tbsp = "TAB"
DEFINE insp = "IND"

@R1/do_your_job.sql $owner $auser $tbsp $insp

在R1 / do_your_job内部:

define sowner = $1
define auser = $2
define tbsp = $3
define insp = $4

alter session set current_schema=$sowner;

然后我得到:Ora 00911:标记我的$符号的无效字符

为什么不将$ owner解码为“ SOWNER”?

我的文件仍然标有“设置定义$” ...

谢谢。

1 个答案:

答案 0 :(得分:1)

通过时使用'&variable',阅读时使用'&1', '&2'等。

DEFINE sowner = "SOWNER"
DEFINE auser = "AUSER"
DEFINE tbsp = "TAB"
DEFINE insp = "IND"

@R1/do_your_job.sql &sowner &auser &tbsp &insp 

您的do_your_job.sql可以用作

select '&1','&2','&3','&4' from dual;

结果

@R1/do_your_job.sql &sowner &auser &tbsp &inspSQL> SQL> SQL> SQL> SQL>
old   1: select '&1','&2','&3','&4' from dual
new   1: select 'SOWNER','AUSER','TAB','IND' from dual

'SOWNE 'AUSE 'TA 'IN
------ ----- --- ---
SOWNER AUSER TAB IND