Oracle 調用存儲過程執行動態SQL語句(無參)


今天想在程序拼接好執行修改語句(添加、更新、刪除),調用數據庫存儲過程執行

首先,我們來編寫這個存儲過程

/*
*  執行存儲過程
* 輸入參數:執行SQL
* 輸出參數:返回受影響行數
*/
create or replace procedure Proc_ExecSql
(
--定義輸入、輸出參數--
strSql in varchar,
strCount out integer
)
as
--定義變量--
begin   
     --執行動態SQL
     execute immediate strSql;
     --返回受影響行數
     strCount:=sql%rowcount;
     dbms_output.put_line('執行返回結果:'||strCount );
     commit;
end;

調用存儲過程實例:

調用存儲過程方法(公司內部)

        /// <summary>
        /// 執行存儲過程
        /// </summary>
        /// <param name="rkDb">數據庫連接</param>
        /// <param name="procName">存儲過程名稱</param>
        /// <param name="execSql">執行Sql語句</param>
        /// <returns></returns>
        public int ExecSqlByProceducre(IDbContext rkDb,string procName,string execSql)
        {
            //創建存儲過程對象
            IStoredProcedureBuilder sb = rkDb.StoredProcedure(procName);
            //添加參數到對象中
            sb.Parameter("STRSQL", execSql, DataTypes.String);   //輸入參數
            sb.ParameterOut("STRCOUNT", DataTypes.Int32);  //輸出參數
            //執行存儲過程 
            sb.Execute();
            //獲取存儲過程中輸出參數的值         
            return (int)sb.ParameterValue<dynamic>("STRCOUNT");
        }

調用執行前

 

 調用執行測試

declare strCount integer;
begin
   --調用存儲過程(名稱:一次性使用葯液轉移過濾器 --> 一次性使用葯液) ---
   PROC_EXECSQL('update DXC_GOODS set NAME=''一次性使用葯液'' where MID=164600',strCount);
end;

調用執行后

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM