2016-10-03 99 views
2

我試圖得到一個文件,我的用戶名和密碼的一些腳本,我天天跑。我有幾個腳本正在使用具有我的用戶名和密碼的批處理文件。參數傳遞給在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件事,似乎沒有任何工作。提前謝謝你的幫助。

回答

1

你可以傳遞一個參數是這樣的:

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 
0

只是打字說出來讓我想起傳球它在調用期間與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