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表起到了关键作用。