shell调用oracle存储过程
发布网友
发布时间:2022-04-08 10:02
我来回答
共1个回答
热心网友
时间:2022-04-08 11:32
#!/bin/sh
sqlplus abc/passwd << EOF
set linesize 500;
set pagesize 10000;
spool output.txt
call a1();
call a2();
call a3();
commit;
spool off
quit;
EOF
大概就是这个方式。
需要修改一下oracle用户密码,如果存储过程有参数还需要修改调用的地方。
追问sqlplus abc/passwd 密码有特殊字符!# ,有什么符号取消特殊含义,sqlplus登录不了,只能先nsqlplus /nolog再登录。3个存储过程的i_sum_month这个参数都要求是201503,怎么改,然后不是3个存储过程执行完了一起commit,而已一个执行完了就commit。
追答
密码有特殊字符!# : 你试试用 sqlplus 'abc/!!!' 即用单引号把用户密码包起来
3个存储过程的i_sum_month这个参数都要求是201503
:修改为 call a1(201503);这个样子,其他的一并修改
一个执行完了就commit
:
修改为每个之后有一个commit;
#!/bin/sh
sqlplus 'abc/passwd' << EOF
set linesize 500;
set pagesize 10000;
spool output.txt
call a1(201503);
commit;
call a2(201503);
commit;
call a3(201503);
commit;
spool off
quit;
EOF