首页 > 解决方案 > 无效字符 - 输入参数的美元符号未解码

问题描述

我在一些使用参数传递的 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:标记我的 $ 符号的无效字符

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

无论如何,我的文件都标有“set define $”...

谢谢你。

标签: oraclesqlplus

解决方案


'&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

推荐阅读