sqlplus 执行脚本文件时如何传参数

 我来答
badkano
2014-11-07 · 知道合伙人体育行家
badkano
知道合伙人体育行家
采纳数:144776 获赞数:885365
团长

向TA提问 私信TA
展开全部
d:\test.sql脚本如下:
[sql] view plaincopy
select &1 from &2;
exit;

执行时这样传猛余弯参数:sqlplus "scott/tiger@test" @d:\test.sql sysdate dual
注意:参数必须用&[1-9]表示,不然传不进去,会提示让手动输入参数
[sql] view plaincopy
C:\>sqlplus "scott/tiger@test" @d:\test.sql sysdate dual

D:\>sqlplus "scott/tiger@test" @d:\test.sql sysdate dual

SQL*Plus: Release 11.2.0.1.0 Production on 星期二 11月 1 21:59:00 2011

Copyright (c) 1982, 2010, Oracle. All rights reserved.

连接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options

原值 1: select &1 from &2
新值 1: select sysdate from dual

SYSDATE
--------------
01-11月-11

从 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 断


D:\>

如果脚本中有重复用到毁腔相同的值,如果&1=&2:
d:\tes2.sql
[sql] view plaincopy
delete scott.emp where no=&1 or deptno=&2;
commit;

执行时,就必须传2个参数:
[sql] view plaincopy
sqlplus "scott/tiger@test" @d:\test2.sql 10 10

小窍门: 这时用procedure就可以不用传多个相同的参数,则只用传1个参数:
d:\test3.sql
[sql] view plaincopy
declare
var_no number:=&1;
begin
delete scott.emp where no=var_no or deptno=var_no;
commit;
end;

sqlplus "scott/tiger@test"枝闷 @d:\test3.sql 10
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式