参数传递给在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