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;

调用执行后

 

posted @   小小邪  阅读(4301)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· Open-Sora 2.0 重磅开源!
历史上的今天:
2015-12-28 运行QQ出现initialization failure 0x0000000c错误和浏览器上不了网
点击右上角即可分享
微信分享提示