【发布时间】:2020-05-16 21:00:32
【问题描述】:
我想在事务中检索包含 Oracle db 生成的 sys_guid() 的特定列的值。
public string GetGUID(OracleConnection connection)
{
string guid = "";
connection.Open();
OracleCommand cmd = new OracleCommand();
OracleTransaction transaction;
transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted);
cmd.Transaction = transaction;
cmd.Connection = connection;
try
{
cmd = connection.CreateCommand();
cmd.CommandText = "INSERT INTO CUSTOMERS (NAME,DETAILS) VALUES (:nm, :dts)";
cmd.Parameters.Add("nm", OracleDbType.VarChar);
cmd.Parameters["nm"].Value = name;
cmd.Parameters.Add("dts", OracleDbType.VarChar);
cmd.Parameters["dts"].Value = details;
cmd.Prepare();
OracleDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
}
reader.Close();
transaction.Commit();
}
catch (Exception e)
{
transaction.Rollback();
Console.WriteLine(e.Message);
}
return guid;
}
表 CUSTOMERS 有一个列 ORDER,它使用 SYS_GUID() 创建一个 guid,我如何检索该 guid?
【问题讨论】:
-
"INSERT INTO CUSTOMERS (NAME,DETAILS) VALUES (:nm, :dts) RETURNING \"ORDER\" INTO :orderid " -
侧节点:你没有什么可看的,这就是为什么
cmd.ExecuteNonQuery(); -
抱歉误导 :orderid,我更正了。我没有在 order 列中插入任何值,我使用 sys_guid() 离开 Oracle 数据库来填充它。