.net实现oracle数据库中获取新插入数据的id的方法

网络编程 2025-03-23 19:48www.168986.cn编程入门

```sql

INSERT INTO test(id, name) VALUES(seq_test.nextval, 'name1');

```

```sql

SELECT seq_test.currval FROM dual;

```

存储过程代码如下:

```sql

CREATE OR REPLACE PROCEDURE p_GetItemID(

strInsertSQL VARCHAR2,

seqName VARCHAR2,

ID OUT VARCHAR2)

IS

strSql VARCHAR(200);

BEGIN

EXECUTE IMMEDIATE strInsertSQL;

-- 构建获取ID的SQL语句

strSql := 'SELECT ' || seqName || '.CURRVAL FROM DUAL';

-- 执行获取ID的SQL语句

EXECUTE IMMEDIATE strSql INTO ID;

EXCEPTION

WHEN OTHERS THEN

DBMS_OUTPUT.PUT_LINE(SQLERRM);

END p_GetItemID;

```

C代码实现如下:

```csharp

public string ExecuteProcedure(string strInsertSQL, string proName, string seqName)

{

try

{

// 从Web.config获取数据库连接,并确保连接处于打开状态

if (m_Connection_orc.State != System.Data.ConnectionState.Open)

{

m_Connection_orc.Open();

}

}

catch (System.Exception ex)

{

// 异常处理...

}

try

{

OracleConnection dbConnection_orc;

OracleCommand dbCommand_orc;

dbConnection_orc = m_Connection_orc;

dbCommand_orc = new OracleCommand(proName, dbConnection_orc);

dbCommand_orcmandType = CommandType.StoredProcedure;

// 添加存储过程参数,并设置参数类型和方向

dbCommand_orc.Parameters.Add("strInsertSQL", OracleType.VarChar);

dbCommand_orc.Parameters.Add("seqName", OracleType.VarChar);

dbCommand_orc.Parameters.Add("ID", OracleType.VarChar);

dbCommand_orc.Parameters["ID"].Direction = ParameterDirection.Output;

// 设置参数值并执行存储过程

dbCommand_orc.Parameters["strInsertSQL"].Value = strInsertSQL;

dbCommand_orc.Parameters["seqName"].Value = seqName;

dbCommand_orc.ExecuteNonQuery();

// 获取并返回ID值

string newID = dbCommand_orc.Parameters["ID"].Value.ToString();

return newID;

}

catch (System.Exception ex)

{

throw ex;

}

finally

{

CloseConnection(); // 关闭数据库连接

}

}

```

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by