oracle - 无效字符 - 输入参数的美元符号未解码
问题描述
我在一些使用参数传递的 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 $”...
谢谢你。
解决方案
'&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
推荐阅读
- google-cloud-endpoints - 在 GCP 中查找谁使用了我的私有 API
- angular - Angular 8:没有 MultilevelMenuService 的提供者
- php - 如何在 PHP 中添加“只读”选项?
- ruby-on-rails - ActiveRecord 方法偏移量无法正常工作
- java - 如何用杰克逊反序列化枚举?
- javascript - 在 JavaScript 中验证数字步数?
- macos - MacOS 上的 .bashrc 和 .bash_profile 有什么关系?
- yaml - Azure 管道接口
- html - 为什么 jQuery UI Spinner 箭头按钮不显示?
- python - Keras MNIST 目标向量自动转换为 one-hot?