shell oracle互動
cat a.sh
sqlplus etl_user/etl_user << !
set heading off
col flag noprint
column flag new_val dat
select odb2odm_flag flag from etl_process_ctrl;
host echo &dat > /data/odb2odm-ok.txt
exit;
exit;
!
cat a.sh
sqlplus ods_user/ods_user << !
set heading off
col today noprint
column today new_val dat
select to_char( sysdate, 'yyyy-mm-dd') today from dual;
If &dat ='2009-05-22' Then
begin
host echo &dat > /data/s.txt
end;
End If;
exit;
exit;
!
~/new_folder
$ str="2008-10-11"
~/new_folder
$ result=`sqlplus -s <
select to_date('$str','YYYY-MM-DD') from dual;
exit;
eof
`
~/new_folder
$ echo $result
11-10? -08
$ result=`sqlplus -s <
select 1 from dual union select 2 from dual;
exit;
eof
`
~/new_folder
$ echo $result
1 2
文章出處:
Shell 與 SQLPLUS 的 互動 ---- 引數傳遞 返回值
unix上要執行oracle的sql,常見的是用shell指令碼來呼叫sqlplus執行sql。
用這種方式,自然shell和sqlplus就有可能進行互動---shell傳遞引數進sqlplus,sqlplus將結果返回給shell。
從shell傳引數進sqlplus是很簡單的,可以在sql語句中用${shell變數名}的方式直接引用shell的變數.
eg,
transaction_sequence=$1
sqlplus -S << EOF
delete ODSDEFAULT_ODS_CONTROL WHERE TRANSACTION_SEQUENCE = ${transaction_sequence};
exit;
EOF
但如果我一個sql的執行結果需要返回給shell,那該怎麼處理呢?shell中可沒法直接來引用sqlplus裡的變數。
經過研究,我發現以下兩種方式可以達到這個目的。
方法1-----------
VALUE=`sqlplus -S << EOF
set heading off
set pagesize 0;
set feedback off;
set verify off;
set echo off;
select sysdate from dual;
exit;
END`
if [ -z "$VALUE" ]; then
echo "No rows returned from database"
exit 0
else
echo "Max Sequence Number: $VALUE"
fi
方法2-----------
sqlplus -S << EOF
set heading off feedback off pagesize 0 verify off echo off
col coun new_value v_coun
select 255 coun from dual;
exit v_coun
EOF
VALUE="$?"
echo "The number of rows is $VALUE."
不過方法2有個侷限性,exit後面跟的數值只能在0-255之間。超過後會自動以255取餘。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16396910/viewspace-1029556/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux Shell自動互動Linux
- shell指令碼-免互動指令碼
- (轉載)五MongoDB互動shellMongoDB
- shell程式設計之免互動程式設計
- linux shell 互動, read 命令Linux
- shell擴充套件——免互動指令碼套件指令碼
- Linux Shell互動式自動化運維程式Linux運維
- 建立互動式shell指令碼對話方塊指令碼
- 使用互動式 shell 來增強你的 PythonPython
- JSShell:一個基於python的互動式ShellJSPython
- ORACLE自動備份shell指令碼Oracle指令碼
- linux透過shell指令碼實現ssh互動式自動化Linux指令碼
- linux - 怎麼自動填寫有互動的shell指令碼 - SegmentFaultLinux指令碼
- 使用shell自動傳送Oracle AWR報告Oracle
- Linux通過Shell指令碼命令修改密碼不需要互動Linux指令碼密碼
- WPF和js互動 WebBrowser資料互動JSWeb
- Oracle Shell ScriptingOracle
- SHELL指令碼實現Oracle自啟動與關閉指令碼Oracle
- [Shell] 自動生成oracle awr report並mail出來OracleAI
- asp.net 禁止主機互動式 shell 命令執行許可權風險 ashxASP.NET
- 元件化開發跨module互動方式—ModuleBus互動元件化
- 互動投影+沉浸式互動投影綜合解決方案
- Python|Python互動之mongoDB互動詳解PythonMongoDB
- 元件化開發跨module互動方式---ModuleBus互動元件化
- 微互動(五)——微互動的迴圈與模式模式
- Oracle 11g EXPDP、RMAN自動備份SHELL指令碼Oracle指令碼
- linux-oracle-shellLinuxOracle
- jQueryUI之互動jQueryUI
- RN互動iOSiOS
- 資料互動
- JS原生互動JS
- 簡單互動
- Struts2和Oracle資料庫互動的小DemoOracle資料庫
- oracle 互鎖的sqlOracleSQL
- laravel使用workerman 使用者互動、伺服器互動Laravel伺服器
- Android中程式與Service互動的方式——互動方式Android
- 淺析mysql互動式連線&非互動式連線MySql
- Oracle-SHELL程式設計Oracle程式設計