• 如何查看存储过程中动态生成的sql


    今天在工作中遇到那么一个需求,要查看存储过程中生成的sql,以便和实际的业务需求核对。

    经过多方查询,想到如下办法:

    1、在存储过程中凡是涉及到execute immediate mysql的地方,加上DBMS_OUTPUT.PUT_LINE(mysql);同时为了减少运行时间将execute immediate mysql注释。

    2、如果因为mysql字符过长,报string buffer is too small,那么采用另外一种方式,事先定义v_pos Number := 1;然后通过以下语句输出: 

    1 WHILE v_pos<= LENGTH(mysql) LOOP
    2     DBMS_OUTPUT.PUT_LINE(SUBSTR(mysql, v_pos, 200));
    3     v_pos:=v_pos+200;
    4 END LOOP;

    3、然后编译完上面的存储过程后,在command window下执行如下语句:

    set serveroutput on;
    declare
    begin
    dbms_output.enable(200000);
    proc_one_to_many_source_erp_jc('QKJTJ_BAS_ITEMINFO_DWJJ','004002');--存储过程名称自行调整,参数自行在填充
    end;

    4、这样输出的sql后面是不带;号的,请自行在每条sql后加上;号。
    另外通过第二种方式输出的sql,会强制带有空格,请自行去掉空格,方式有很多,我是在word中通过将^p替换成 的方式去的。

    5、最后的将sql拷贝到工具中格式化一下就可以看懂了。

    6、暂时只想到这么个办法,有其他办法再进行优化。

  • 相关阅读:
    python多版本切换
    python之禅
    Python int与string之间的转化
    pycharm工具使用
    python学习路线图
    traceback.print_exc()的用法
    他人学习Python感悟
    【西北师大-19软工】第十三、十四次作业汇总暨期末总结
    【西北师大-19软工】第十二次作业成绩汇总
    第十七周助教工作总结——NWNU李泓毅
  • 原文地址:https://www.cnblogs.com/xiaoyaojc/p/4740050.html
Copyright © 2020-2023  润新知