首页 > 数据库 > mysql教程 > SQL*Plus 执行脚本时传递参数(@script_name var1,var2)

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

WBOY
发布: 2016-06-07 16:46:51
原创
1052 人浏览过

在使用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"     

linux

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板