動態執行函式

2022-05-28 08:27:10 字數 1693 閱讀 1050

引用:  

呼叫: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...