我想將Windows批處理文件中的變量傳遞給SQLPLUS, ,同時顯示sql結果批處理變量應該與sql結果一起打印。如何將Windows批處理文件中的變量傳遞給SQL * Plus
結果應該存儲在csv文件中。
我該怎麼做。
這可能在Unix(shell腳本)中,我怎麼能在Windows(批處理腳本)中做到這一點。
我想將Windows批處理文件中的變量傳遞給SQLPLUS, ,同時顯示sql結果批處理變量應該與sql結果一起打印。如何將Windows批處理文件中的變量傳遞給SQL * Plus
結果應該存儲在csv文件中。
我該怎麼做。
這可能在Unix(shell腳本)中,我怎麼能在Windows(批處理腳本)中做到這一點。
我想從Windows批處理文件傳遞變量爲sqlplus,
它只是作爲參數傳遞到SQL腳本。而使用置換變量以相同的順序將參數列表&1 &2...
例如,
mybatchfile.BAT的:
sqlplus -S username/[email protected]
@c:\sql\mysqlfile.sql 1000 7369
mysqlfile.SQL:
update emp set sal = &1 where empno = &2
whi顯示sql結果批量變量應該與sql結果一起打印。
要顯示作爲參數傳遞給SQL腳本的變量,首先需要定義綁定變量,然後分配參數值並打印值。
例如,
我有TEST.SQL:
對於號碼類型
-- define the bind variable
var sal number
-- assign the first argument's value
exec :sal := &1
-- display the value
print :sal
-- define the bind variable
var empno number
-- assign the second argument's value
exec :empno := &2
-- display the value
print :empno
現在,讓我們來測試腳本:
SQL> @D:\test.sql 1000 7369
PL/SQL procedure successfully completed.
SAL
----------
1000
PL/SQL procedure successfully completed.
EMPNO
----------
7369
SQL>
對於STRING型
-- define the bind variable
var ename varchar2(10)
-- assign the argument's value
exec :ename := '&1'
-- display the value
print :ename
現在,讓我們來測試腳本:
SQL> @D:\test.sql LALIT
PL/SQL procedure successfully completed.
ENAME
--------------------------------
LALIT
SQL>
結果應存儲在csv文件。
在SQL腳本中處理此操作。使用適當的SQL * Plus格式爲逗號分隔結果。存儲結果集,你只需要SPOOL
例如,
set colsep , -- separate columns with a comma
set pagesize 0 -- No headers
set trimspool on -- remove trailing blanks
spool mycsvfile.csv
SELECT ....
spool off
只是把它作爲一個**參數SQL腳本**和使用'替代variables'。並將結果集存儲爲CSV文件,使用'SPOOL'和格式爲'set colsep', – 2015-04-02 05:16:09