c#里用pl/sql匿名块和绑定变量在执行insert后获取当前序列值

本文介绍了如何在C#应用中利用PL/SQL匿名块执行INSERT操作,并通过绑定变量获取Oracle数据库中自增序列的当前值。主要涉及的技术包括C#、SQL、Oracle数据库以及按钮事件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

1.在oracle中建立表、序列、触发器: 



SQL
> create table TESTTAB 

2 ( 

3 ID NUMBER, 

4 NAME VARCHAR2(10

5 ); 



表被创建 



SQL
> create sequence TESTTABSEQ 

2 minvalue 1 

3 maxvalue 999999999999999999999999999 

4 start with 1 

5 increment by 1 

6 cache 20



序列被创建 



SQL
> create or replace trigger Tr_testtabid 

2 before insert on testtab for each row 

3 

4 begin 

5 SELECT TESTTABSEQ.NEXTVAL into :NEW.id from dual; 

6 end Tr_testtabid; 

7 / 



触发器被创建 





2.主要的C# 代码: 

using ORAC = System.Data.OracleClient; 

private void button1_Click(object sender, System.EventArgs e) 



try 





string str_Sql = @"begin insert into testtab(name) values('test'); select TESTTABSEQ.Currval into :ID from dual; end;"

ORAC.OracleCommand cmd
= new ORAC.OracleCommand(str_Sql,this.oracleConnection1); 



ORAC.OracleParameter parm 
= new ORAC.OracleParameter("ID",ORAC.OracleType.Number); 

parm.Direction 
= ParameterDirection.Output; 

cmd.Parameters.Add(parm); 



if(this.oracleConnection1.State == System.Data.ConnectionState.Closed) 



this.oracleConnection1.Open(); 

}
 

cmd.ExecuteNonQuery(); 





this.textBox1.Text = cmd.Parameters[0].Value.ToString(); 

}
 

catch(Exception ex) 



MessageBox.Show(
"发生错误!"); 



}
 

finally 



this.oracleConnection1.Close(); 

}
 

}
 

Oracle中的dual表起到了关键作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值