Home >Database >Mysql Tutorial >SQL*Plus 执行脚本时传递参数(@script_name var1,var2)

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

WBOY
WBOYOriginal
2016-06-07 16:46:511053browse

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn