```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(); // 关闭数据库连接
}
}
```