读书人

.net链接oracle数据库上面SQL语句的有

发布时间: 2012-12-14 10:33:07 作者: rapoo

.net链接oracle数据库下面SQL语句的问题
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都不行
[最优解释]
我的做法是在程序中根据";"分割开语句,一条条执行,无需写存储过程,避免改动数据库。
[其他解释]


--放在一起的话,你如果要返回值,需写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();
}
}

[其他解释]
insert into LIS.MZDX(ID)values(LIS.mzautoid.nextval)
select @@identity

[其他解释]
引用:
C# code

--放在一起的话,你如果要返回值,需写sp去执行
using System;
using System.Data.SqlClient;

using System.Data.OracleClient;

public class Test
{
/*
建表及序列
create table t(id int);


create……



多语句的话只能通过写存储过程实现吗?

读书人网 >SQL Server

热点推荐