2015/12/11

Oracle PL/SQL Dynamic SQL 動態語法 2

在這篇文章中,

介紹 Orale Dynamic SQL 如何動態執行 Procedure / Function,

參考範例, 如下 :
 程式碼
-- 步驟 1 : 建立 Test Function
create or replace function tom_func1( a number, b number ) return VARCHAR2
is
  c number;
begin
  c := a + b;
  return to_char(c);
end;

-- 步驟 2 : 利用 Select 取得 Function 值 (限制 : Function 中不能有 DML)
declare
  vResult varchar2(3);
begin
  execute immediate 'select tom_func1( :1, :2 ) from dual' into vResult using 100, 200;
  dbms_output.put_line( vResult );
end;

-- 步驟 3 : 利用 Begin...End 取得 Function 值 (限制 : 無)
declare
  vResult varchar2(3);
begin
  execute immediate 'begin :1 := tom_func1( :2, :3 ); end;' using out vResult, 100, 200;
  dbms_output.put_line( vResult );
end;

-- 步驟 4 : Drop Test Function
drop function tom_func1;

其他 Dynamic SQL 介紹文章 :

Dynamic SQL 基礎:Dynamic SQL 基本語法.

進階 1:動態執行 Begin ~ End.

進階 2:動態取得多筆資料.