将一个存储过程导出到处到文件中,发现有些注释因为换行,导致无法执行。怎么才可以去掉换行,通过set long,set wrap 都不管用。
存储过程脚本
CREATE OR REPLACE PROCEDURE "P_TEST"(p__id IN NUMBER,
p_errno OUT NUMBER,
p_errmsg OUT VARCHAR2) IS
hcnt PLS_INTEGER -- 本产品猜中统计:-1表示通配符;0表示未猜中;>0的正整数表示猜中次数
;
hcnt PLS_INTEGER; -- 本产品猜中统计:-1表示通配符;0表示未猜中;>0的正整数表示猜中次数
e_application EXCEPTION;
BEGIN
p_errno := 0;
p_errmsg := NULL;
dbms_output.put_line('完成');
END;
导出脚本:
set trimspool on
set pagesize 0
set linesize 32767
set long 9000
set echo OFF
set feedback OFF
--导出文件名称
spool .\3_procedure.sql
--输出信息采用缩排或换行格式化
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'PRETTY', TRUE);
--确保每个语句都带分号
EXEC DBMS_METADATA.set_transform_param(DBMS_METADATA.session_transform, 'SQLTERMINATOR', TRUE);
--导出对象
SELECT dbms_metadata.get_ddl(u.object_type, u.object_name)
FROM user_objects u
WHERE u.object_type IN ('PROCEDURE')
AND u.OBJECT_NAME='P_TEST';
spool off;
导出的结果:
微信图片_20180709104631.png (44.38 KB, 下载次数: 7)
2018-7-9 10:46 上传