存儲過程調用shell
對於存儲我是不很了解,但是可以通過這種方式來調用oracle的sqlplus。
#catsql.sh
#!/bin/bash
su-oracle-c'
sqlplus-S/assysdba<<EOF
selectstatusfromv$instance;
exit
EOF
'
#bashsql.sh
STATUS
------------------------
OPEN
B. shell調用oracle存儲過程
#!/bin/sh
sqlplusabc/passwd<<EOF
setlinesize500;
setpagesize10000;
spooloutput.txt
calla1();
calla2();
calla3();
commit;
spooloff
quit;
EOF
大概就是這個方式。
需要修改一下oracle用戶密碼,如果存儲過程有參數還需要修改調用的地方。
C. shell中怎麼獲取存儲過程的輸出參數給變數
#下面的代碼是對於從oracle的sqlplus返回變數值給shell的例子
output=`sqlplus -s unitele/lemontea << EOF
set heading off feedback off verify off
drop function test_get_param_value_p;
CREATE OR REPLACE function test_get_param_value_p
(
is_citycode in varchar2
)
return varchar2
is
on_value varchar2(100);
begin
on_value :='100000';
dbms_output.put_line(on_value);
dbms_output.put_line(is_citycode);
return on_value;
end;
/
select test_get_param_value_p('501') from al;
exit
EOF
`
echo "Oracle的輸出變數值:"$output
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++=
存儲過程 myproc(in_num in number,out_num out number)
sql腳本模板
先編輯一個mysql.sql文件,內容如下:
------------
var nret number;
execute :nret := 0;--初始化
call myproc(in_code,:nret)--執行存儲過程,in_code會被替換掉
/
select 'retcode[' || :nret || ']retcode' from al--顯示結果
/
quit;
-------------
SHELL腳本mysh.sh,內容如下
-------------
#./mysh.sh 123
cd /home/myshell
sed "s/in_code/$1/" mysql.sql > mysql01.sql
#根據sql腳本模板生成實際腳本
sqlplus usr/pwd@db result$1.txt
#執行sql腳本並把結果輸入result$1.txt
echo ok!
-------------
在LINUX下執行./mysh.sh 123,生成result123.txt,myproc輸出參數在'retcode['和']retcode'之間。
D. java如何實現對存儲過程的調用
import java.sql.*;
public class ProcereTest
{
public static void main(String args[]) throws Exception
{
//載入驅動
DriverManager.registerDriver(new sun.jdbc.odbc.JdbcOdbcDriver());
//獲得連接
Connection conn=DriverManager.getConnection("jdbc:odbc:mydata","sa","");
//創建存儲過程的對象
CallableStatement c=conn.prepareCall("{call getsum(?,?)}");
//給存儲過程的第一個參數設置值
c.setInt(1,100);
//注冊存儲過程的第二個參數
c.registerOutParameter(2,java.sql.Types.INTEGER);
//執行存儲過程
c.execute();
//得到存儲過程的輸出參數值
System.out.println (c.getInt(2));
conn.close();
}
}
E. oracle存儲過程中調用一個shell腳本,用於進行一些操作,已經賦許可權,但是執行不了
shell的環境變數問題,你在shell內部的變數是獲取不到外部執行結果的。
F. shell如何獲取oracle存儲過程返回值
類似下面的方法:
fcp_login="<user>/<password>"
ret_value=`sqlplus-s$fcp_login<<EOF
setheadingoff
setfeedbackoff
setpages0
settrimspoolon
VARIABLEx_outnumVARCHAR2(30);
EXECUTEimportUserInfoDate1g(:x_outnum);
printx_outnum
exit;
EOF`
G. 請問編寫Shell腳本,通過資料庫介面調用sybase存儲過程,這個shell應該怎麼寫呢
用isql -u 用戶名 -p 密碼 -S server_name連接
再在裡面寫 call 存儲過程
你在網上再查查資料,我以前用過,個別語法有點遺忘了