C#调用Oracle存储过程
1.创建表
create table test (ID number, NAME varchar2(10), SEX varchar2(4), AGE number, ADDRESS varchar2(200) );
2.创建不带参数的存储过程
create or replace procedure proc1 is begin insert into test(ID,NAME,SEX,AGE) values (1,'moses','man',25); commit; end; /
3.写C#代码调用这个不带参数的存储过程
protected void Button2_Click(object sender, EventArgs e) { String oc = ConfigurationManager.ConnectionStrings["conn"].ToString(); OracleConnection conn = new OracleConnection(oc); conn.Open(); OracleCommand orm = conn.CreateCommand(); orm.CommandType = CommandType.StoredProcedure; orm.CommandText = "proc1"; orm.ExecuteNonQuery(); conn.Close(); }
4.写一个没有返回值的带参数的存储过程
create or replace proc2 (v_id number, v_name varchar2 ) is begin insert into test(id,name) values(v_id,v_name); commit; end; /
5.C#调用这个带参数无返回值的存储过程
protected void Button1_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(this.TextBox2.Text)) { this.TextBox2.Text = "编号不能为空"; this.TextBox2.Focus(); return; } if (string.IsNullOrEmpty(this.TextBox3.Text)) { this.TextBox3.Text = "姓名不能为空"; this.TextBox3.Focus(); return; } String or=ConfigurationManager.ConnectionStrings["conn"].ToString(); OracleConnection oc = new OracleConnection(or); oc.Open(); OracleCommand om = oc.CreateCommand(); om.CommandType = CommandType.StoredProcedure; om.CommandText = "proc2"; om.Parameters.Add("v_id", OracleType.Number).Direction = ParameterDirection.Input; om.Parameters["v_id"].Value = this.TextBox2.Text.Trim(); om.Parameters.Add("v_name", OracleType.NVarChar).Direction = ParameterDirection.Input; om.Parameters["v_name"].Value = this.TextBox3.Text.Trim(); om.ExecuteNonQuery(); oc.Close(); }
6.写一个带参数有返回值的存储过程
create or replace procedure proc3 (recount out number ) is begin select count(*) into reccount from test; commit; end; /
7.C#调用这个带参数有返回值的存储过程
protected void Button1_Click(object sender, EventArgs e) { String or = ConfigurationManager.ConnectionStrings["conn"].ToString(); OracleConnection oc = new OracleConnection(or); oc.Open(); OracleCommand ocm = oc.CreateCommand(); ocm.CommandType = CommandType.StoredProcedure; ocm.CommandText = "proc3"; ocm.Parameters.Add("reccount", OracleType.Number).Direction = ParameterDirection.Output; ocm.ExecuteNonQuery(); this.TextBox1.Text = ocm.Parameters["reccount"].Value.ToString(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律