動態呼叫帶引數的儲存過程
如何動態呼叫帶引數的儲存過程呢?
上面測試的都是沒有引數的儲存過程;
請問如何動態呼叫帶引數的儲存過程;
如:proc_one,proc_two都是沒有引數的;
如果是有引數,怎麼樣把引數從proc_main傳遞給proc_one,
proc_one修改後,還能傳遞給proc_main;
空心菜 | 12/12/2006, 22:47
今天中午抽空為其寫了一個新的demo,希望能有所幫助
說明:proc_one、proc_two、proc_three用來模擬三個procedure,proc_main用來透過動態呼叫前面三個過
程的過程。在proc_main中輸入一個引數,在proc_one/two/three中處理後返回到proc_main中。下面是code
和測試過程。
SQL> create or replace procedure proc_one(p_arg in out varchar2) as 2 begin 3 dbms_output.put_line('one proc call, input arg is '||p_arg); 4 p_arg:=p_arg||' return from proc_one'; 5 end; 6 / 過程已建立。 SQL> SQL> create or replace procedure proc_two(p_arg in out varchar2) as 2 begin 3 dbms_output.put_line('two proc call, input arg is '||p_arg); 4 p_arg:=p_arg||' return from proc_two'; 5 end; 6 / 過程已建立。 SQL> SQL> create or replace procedure proc_three(p_arg in out varchar2) as 2 begin 3 dbms_output.put_line('three proc call, input arg is '||p_arg); 4 p_arg:=p_arg||' return from proc_three'; 5 end; 6 / 過程已建立。 SQL> create or replace procedure proc_main( 2 v_procname in varchar2, 3 p_arg in varchar2 default null) 4 as 5 6 v_sql varchar2(255); 7 v_ret varchar2(255); 8 begin 9 v_ret:=p_arg; 10 v_sql:='begin '||v_procname||'(:v1); end;'; 11 execute immediate v_sql using in out v_ret; 12 dbms_output.put_line('main proc call completed!'); 13 dbms_output.put_line('main input arg return is '||v_ret); 14 end; 15 / 過程已建立。 SQL> SQL>
備註:v_ret變數是在proc_main中動態傳入到要呼叫的過程中的引數,然後接受被呼叫過程處理
後的結果並在proc_main中顯示。
SQL> set serveroutput on SQL> exec proc_main('proc_one','call one'); one proc call, input arg is call one main proc call completed! main input arg return is call one return from proc_one PL/SQL 過程已成功完成。 SQL> exec proc_main('proc_two','call two'); two proc call, input arg is call two main proc call completed! main input arg return is call two return from proc_two PL/SQL 過程已成功完成。 SQL> exec proc_main('proc_three','call three'); three proc call, input arg is call three main proc call completed! main input arg return is call three return from proc_three PL/SQL 過程已成功完成。 SQL>
thomas zhang 的雜貨鋪[@more@]
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/658202/viewspace-1032467/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Java呼叫儲存過程(帶輸出引數)Java儲存過程
- dos下呼叫帶輸出引數的儲存過程儲存過程
- go 如何呼叫 sqlserver 帶傳出引數的儲存過程GoSQLServer儲存過程
- 動態呼叫儲存過程 sample:儲存過程
- 帶輸出引數的儲存過程儲存過程
- oracle父儲存過程呼叫子儲存過程procedure與輸出引數Oracle儲存過程
- 使用帶有輸出引數的儲存過程儲存過程
- C#中呼叫SQL儲存過程(帶輸入輸出引數的例子)C#SQL儲存過程
- jdbctemplate呼叫儲存過程傳遞陣列引數JDBC儲存過程陣列
- mysql儲存過程的引數MySql儲存過程
- Oracle帶輸入輸出引數的儲存過程Oracle儲存過程
- SQLSERVER儲存過程如何寫帶引數的遊標SQLServer儲存過程
- 動態儲存過程儲存過程
- SQL Server-儲存過程(Procedure),帶入引數和出引數SQLServer儲存過程
- 【ASP.NET開發】ADO.NET呼叫帶輸出引數的儲存過程ASP.NET儲存過程
- 呼叫儲存過程儲存過程
- Winform呼叫儲存過程ORM儲存過程
- perl呼叫儲存過程儲存過程
- jdbc呼叫儲存過程JDBC儲存過程
- 在儲存過程A中呼叫儲存過程B的結果儲存過程
- SQL 儲存過程裡呼叫另一個儲存過程SQL儲存過程
- vb呼叫儲存過程的方法儲存過程
- Sqlsugar呼叫Oracle的儲存過程SqlSugarOracle儲存過程
- 儲存過程呼叫其他模式的儲存過程需要注意的地方儲存過程模式
- oracle動態sql儲存過程示例OracleSQL儲存過程
- /*動態執行儲存過程DEMO*/儲存過程
- 用儲存過程動態建立表儲存過程
- mysql如何呼叫儲存過程MySql儲存過程
- linux呼叫儲存過程Linux儲存過程
- PB中呼叫儲存過程儲存過程
- java 呼叫oracle 儲存過程JavaOracle儲存過程
- php呼叫mssql儲存過程PHPSQL儲存過程
- java中呼叫儲存過程Java儲存過程
- 在sqlplus中呼叫in out輸入輸出引數的儲存過程SQL儲存過程
- MySQL 儲存過程引數IN OUT INOUT對比MySql儲存過程
- oracle儲存過程將引數字串分割sqlOracle儲存過程字串SQL
- jsp中呼叫儲存過程JS儲存過程
- Spring mybatis 呼叫儲存過程SpringMyBatis儲存過程