insert into LIS.MZDX(ID)values(LIS.mzautoid.nextval);select LIS.mzautoid.currval ID from dual;目的是插入一条记录,获取自增列ID值在网上找的多语句方案都没有办法实现,尝试过用ODP.NET的Oracle.DataAccess.Client,和.net自带的System.Data.OracleClient都不行

解决方案 »

  1.   


    //放在一起的话,你如果要返回值,需写sp去执行
    //下面是本机测试的简单例子
    using System;
    using System.Data.SqlClient;using System.Data.OracleClient;public class Test
    {
        /*
            建表及序列
            create table t(id int);
            create sequence t_seq;
         */
        public static void Main()
        {        OracleConnection conn = null;
            OracleCommand cmd = null;
            int val = 0;        const string sConn = "data source=orcl;user id=zhangjg;password=1;";
            try
            {
                conn = new OracleConnection(sConn);
                cmd = new OracleCommand("insert into t values(t_seq.nextval)", conn);
                conn.Open();
                cmd.ExecuteNonQuery();
                cmd = new OracleCommand("select t_seq.currval from dual", conn);
                val = Convert.ToInt32(cmd.ExecuteScalar());
            }
            catch (Exception err)
            {
                Console.Write(err.Message);
            }
            finally
            {
                conn.Close();
            }
            Console.WriteLine(val);
            Console.ReadKey();
        }
    }