• 动态执行函数


    引用:  https://www.iteye.com/blog/wjhu-1178822

    调用:

    declare
    v_start_runtime date;
    v_datefrom varchar2(15);
    v_dateto varchar2(15);
    v_redoflag number(1);
    v_para1 varchar2(100);
    v_para2 varchar2(100);
    v_errcode number(10);
    v_err varchar2(1000);
    v_errlog varchar2(1000);
    v_res number(10);
    v_run_second number(16,2);
    v_sql varchar2(4000);
    begin
    v_datefrom := '20190902000000';
    v_dateto := '20190902000000';
    v_redoflag := 1;
    v_para1 := '0';
    v_para2 := '0';

    v_sql:='p_thz.fun_TEST_THROW ';
    EXECUTE IMMEDIATE 'begin :0:='||v_sql||'(:1,:2,:3,:4,:5,:6,:7,:8); end;'
    using out v_res,in v_datefrom, in v_dateto, in v_redoflag, in out v_para1,in out v_para2,out v_errcode,out v_err,out v_errlog; --只用using,先写返回值

    commit;

    end;
    /

    定义一个有输入参数输出参数的函数(肯定有返回值),i_para1和i_para2是输入输出参数

    create package p_thz as

    function fun_TEST_THROW
    (
    i_date_from IN VARCHAR2, -- 统计开始时间 YYYYMMDDHH24MISS
    i_date_to IN VARCHAR2, -- 统计结束时间 YYYYMMDDHH24MISS
    i_redo_flag IN NUMBER, -- 是否重做标记(1是重做,0是不重做)
    i_para1 IN OUT VARCHAR2, -- 动态参数1
    i_para2 IN OUT VARCHAR2, -- 动态参数2
    o_proc_code OUT NUMBER, -- 存储过程返回的错误代码
    o_proc_errm OUT VARCHAR2, -- 存储过程返回的错误信息
    o_sql_err_log OUT VARCHAR2 -- 存储过程返回的错误sql语句
    ) RETURN NUMBER;

    end p_thz;

    --有into则using的参数必现只能输入参数,不能有输出参数.
    --无into则using既可以输入参数又可以输出参数了,适合函数,但返回值必现写在using后面第一个.
    --调用函数只能用using不能into.
    --调用存储过程只需要用到using不需要into.
    --调用select语句则into和using可以同时用,先写into再写using.

  • 相关阅读:
    自省改过
    c语言学习教程1之预定义代码
    tqdm进度条管理
    React-i18next切换中英文
    React怎样实现点击其他地方隐藏弹出的菜单
    遍历对象再取值,获得新值
    Web 用户体验设计提升指南
    antd vue form
    echarts 内容显示值在图中显示,不显示交互效果,只是静态图
    element-ui中el-table根据浏览器的缩放自适应宽度
  • 原文地址:https://www.cnblogs.com/jiangqingfeng/p/11504485.html
Copyright © 2020-2023  润新知