参数传递给在sqlplus脚本
问题描述:
我试图得到一个文件,我的用户名和密码的一些脚本,我天天跑。我有几个脚本正在使用具有我的用户名和密码的批处理文件。参数传递给在sqlplus脚本
我的密码的批处理文件看起来是这样的。 parms.bat
Rem Oracle Db
set odbUsername=myUserName
set odbpassword=myPassword
我的其他脚本调用批处理文件,并得到确定的信息。我有几个sql脚本,我也需要使用这些用户名和密码。我似乎无法让他们工作。但我对sqlplus脚本相当陌生。
我的SQL脚本看起来像这样。
CONNECT [email protected]/mypassword
SET FEEDBACK OFF;
SET ECHO OFF;
SET TERMOUT OFF;
SET HEADING OFF;
SET PAGESIZE 0;
SET LINESIZE 500;
SET TIMING OFF;
SET TRIMSPOOL ON;
SET COLSEP ',';
SPOOL C:\FileTransfers\MeterData.csv
PROMPT CoopCode,MeterID,DateTime,Value
SELECT DISTINCT
a.coopcode
|| ','
|| a.meterno
|| ','
|| a.readdatetime
|| ','
|| a.usage
FROM temp_reconfigured a, temp_goodsence b
WHERE a.coopcode = b.coopcode AND a.meterno = b.meterno
;
Spool off;
EXIT;
我用一个批处理文件调用这个脚本,该批处理文件通过windows任务调度程序运行。
看起来像这样。
sqlplus /nolog @C:\FileTransfers\AutomationScripts\GoodSence\SpoolGoodSenceDataSet.sql
所以我想给用户名称传递从批处理文件的SQL。我已经阅读了几件事,并尝试了大约30件事,似乎没有任何工作。提前谢谢你的帮助。
答
你可以传递一个参数是这样的:
script.sql:
select '&1' from dual;
电话:
D:\>sqlplus user/[email protected] @d:\script.sql 'value'
SQL*Plus: Release 11.2.0.2.0 Production on Lun Ott 3 17:02:10 2016
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Connected to:
Oracle Database 11g Express Edition Release 11.2.0.2.0 - 64bit Production
old 1: select '&1' from dual
new 1: select 'value' from dual
'VALU
-----
value
答
只是打字说出来让我想起传球它在调用期间与sql内部进行连接。然后我编辑我的SQL掏出连接语句
所以这个工作...
echo Get Parameters
call C:\FileTransfers\AutomationScripts\parms.bat
echo %odbUsername%
echo %odbpassword%
sqlplus [email protected]/%odbpassword%@C:\FileTransfers\AutomationScripts\GoodSence\SpoolGoodSenceDataSet.sql