您好,欢迎访问一九零五行业门户网

SQL*Plus 执行脚本时传递参数(@script_name var1,var2)

在使用sqlplus执行sql脚本时,经常碰到向脚本传递参数的情形。类似于shell脚本的参数传递,我们同样可以向sql脚本传递参数,其方
在使用sqlplus执行sql脚本时,经常碰到向脚本传递参数的情形。类似于shell脚本的参数传递,我们同样可以向sql脚本传递参数,其方法是脚本后面直接跟多个连续的参数并以空格分开。本文描述该内容并给出示例。
1、sqlplus 的帮助信息
  下面的帮助信息是关于sqlplus调用带参脚本的说明
  sqlplus -h
is: @|[.] [ ...]
runs the specified sql*plus script from a web server (url) or the
      local file system (filename.ext) with specified parameters that
      will be assigned to substitution variables in the script.
2、shell 提示符下sqlplus调用带参脚本
sql> select * from v$version where rownum
banner
--------------------------------------------------------------------------------
oracle database 11g enterprise edition release 11.2.0.1.0 - 64bit production
sql> insert into emp(empno,ename,job) select 8888,'bob cheng','dba' from dual;
sql> commit;
[oracle@linux1 ~]$ more test.sql
set linesize 160
select empno,ename,job from &1 where upper(ename)=upper('&2');
exit;
[oracle@linux1 ~]$ sqlplus scott/tiger@rac11g @test.sql emp scott
old  1: select empno,ename,job from &1 where upper(ename)=upper('&2')
new  1: select empno,ename,job from emp where upper(ename)=upper('scott')
    empno ename      job
---------- ---------- ---------
      7788 scott      analyst
--注意,,对于含有空格的调用需要使用单引号或双引号,如下示例
[oracle@linux1 ~]$ sqlplus scott/tiger @test.sql emp 'bob cheng' 
old  1: select empno,ename,job from &1 where upper(ename)=upper('&2')
new  1: select empno,ename,job from emp where upper(ename)=upper('bob cheng')
    empno ename      job
---------- ---------- ---------
      8888 bob cheng  dba
[oracle@linux1 ~]$ sqlplus scott/tiger @test.sql emp bob cheng
其它类似信息

推荐信息