一.导读
在做数据移行的时候,业务部分单字段大字节数据需要使用oracle的存储过程进行导出CSV格式,这部分用到了shell处理,今天将一些心得分享给大家。
二.实验环境
Oracle 11g Release 2 (11.2)
三.要点解析
Sqlplus里调用存储过程有exec和call两种方式,下面我们来利用shell来对这两种方式进行简单分析。
1.使用方法
exec方式:
exec pro_name(参数1,参数2,参数n);
call方式:
call pro_name(参数1,参数2,参数n);
2.区别分析
(1).exec只能在sqlplus中使用,属于sqlplus中的命令,当调用的存储过程没有参数的时候既可以直接调用也可以带上括号调用。
例:exec pro_name 或者exec pro_name()
(2).call属于SQL命令,使用时不局限于sqlplus中使用,调用时必须带上括号。
例:call pro_name()
四.案例演示
1.Shell测调用:
sqlplus / as sysdba <
exec PRO_GETNAME();
exit;
EOF
2.存储过程(以生成CSV为例):
CREATE OR REPLACE PROCEDURE PRO_GETNAME AS
P_QUERY VARCHAR2(4000);
P_OUTPUT UTL.FILE.FILE_TYPE;
P_CURSOR INTEGER DEFAULT DBMS_SQL.OP