Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在OracleCommand插入到中后,如何检索sys_guid()的值_C#_Sql_Oracle_Devart - Fatal编程技术网

C# 在OracleCommand插入到中后,如何检索sys_guid()的值

C# 在OracleCommand插入到中后,如何检索sys_guid()的值,c#,sql,oracle,devart,C#,Sql,Oracle,Devart,我想检索某个列的值,该列在事务中包含Oracle db生成的sys\u guid() public string GetGUID(OracleConnection connection) { string guid = ""; connection.Open(); OracleCommand cmd = new OracleCommand(); OracleTransaction transaction; transaction = connection.BeginTra

我想检索某个列的值,该列在事务中包含Oracle db生成的sys\u 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;
}

表客户具有使用SYS\u guid()创建guid的列顺序,如何检索该guid?

try
returning。。进入
,例如


“插入客户(名称、详细信息)值(:nm,:dts)并将\“订单\”返回到:orderid”
侧节点:您没有要读取的内容,这就是为什么
cmd.ExecuteNonQuery()抱歉误导:orderid,我已更正。我没有在订单列中插入任何值,我使用sys\u guid()离开Oracle数据库来填充它。工作非常出色,我使用了查询“插入到客户(名称、详细信息)值(:nm,:dts)将订单返回到:orderid”,但没有@前缀。谢谢!
   ...

   using (OracleCommand cmd = connection.CreateCommand()) {
     cmd.CommandText = 
       @"INSERT INTO CUSTOMERS (
           NAME,
           DETAILS) 
         VALUES (
           :nm, 
           :dts)
         RETURNING 
           ""ORDER"" INTO :orderid";

     cmd.Parameters.Add("nm", OracleDbType.VarChar);
     cmd.Parameters["nm"].Value = name;
     cmd.Parameters.Add("dts", OracleDbType.VarChar);
     cmd.Parameters["dts"].Value = details;

     cmd.Parameters.Add("orderid", OracleDbType.VarChar);  
     cmd.Parameters["orderid"].Direction = ParameterDirection.Output;

     try {
       cmd.ExecuteNonQuery(); // Just execute, nothing to read
       transaction.Commit(); 

       guid = Convert.ToString(cmd.Parameters["orderid"].Value);
     }
     catch (Exception e) { //TODO: put more specific exception type
       transaction.Rollback();   
       Console.WriteLine(e.Message);     
     } 

     return guid;
   }  

   ...