引用:
呼叫: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.
指令碼動態執行API函式
本文介紹如何讓你的指令碼解釋程式解釋執行stdcall規範的api函式 你需要有組合語言基礎,在編寫動態呼叫api程式的時候才用得到,不廢話了開始 呼叫api的關鍵所在就是介面的整理,比如我們在delphi裡面呼叫api 如 tsendmessage function hwnd hwnd msg u...
函式執行時的動態儲存分配
棧 stack 用於分配後進先出lifo的資料 如函式呼叫 堆 heap 用於不符合lifo的 如指標所指向空間的分配 函式呼叫及返回的步驟 呼叫 儲存呼叫資訊 引數,返回位址 分配資料區 區域性變數 控制轉移給被調函式的入口 返回 儲存返回資訊 釋放資料區 控制轉移到上級函式 主呼叫函式 儲存分配...
一種根據輸入動態執行函式
typedef int brewfunction 函式指標型別變數 typedef std map brewmap brewmap g brew map 全域性變數 define registerbrewfunction func namespace registerer func g regist...