【问题标题】:How to write oracle insert query for return value in c#?如何在c#中编写oracle插入查询以获取返回值?
【发布时间】:2018-01-26 01:43:14
【问题描述】:

我写了没有返回值的查询如下:

  con.Open();
  OracleCommand  cmd= CreateCommand();
  cmd.CommandText = $"INSERT INTO {"Customer".GetDoubleQuoted()}({"City".GetDoubleQuoted()},{"CompanyName".GetDoubleQuoted()} , {"ContactName".GetDoubleQuoted()} ,{"Country".GetDoubleQuoted()},{"CustomerID".GetDoubleQuoted()},{"Phone".GetDoubleQuoted()}) VALUES ('Chicago', 'Amisys','Jwk', 'USA','aaa', '123456') \n Returning {"City".GetDoubleQuoted()} into :city";
  cmd.Connection = con;
  cmd.Parameters.Add(new OracleParameter
  {
       ParameterName = ":city",
       OracleDbType = OracleDbType.Varchar2,
       Direction = ParameterDirection.Output
   });
   cmd.ExecuteNonQuery();
  var value= cmd.Parameters[":city"].Value.ToString();

有人可以帮我找出为什么价值不出来吗?

提前致谢。 俊

【问题讨论】:

  • 尝试将 ParameterDirection 设置为 ReturnValue
  • 感谢 Roy,但它根本没有任何改变。

标签: c# sql oracle


【解决方案1】:

该错误是 ODP.NET 中的一个小问题,每次收到 varchar2 returnValue 参数时都必须指定大小。因此,只需将行 Size=32000, 添加到您的示例中即可。

查看下面的完整代码:

 con.Open();
 OracleCommand  cmd= CreateCommand();
 cmd.CommandText = $@"INSERT INTO {"Customer".GetDoubleQuoted()(
        {"City".GetDoubleQuoted()},
        {"CompanyName".GetDoubleQuoted()},
        {"ContactName".GetDoubleQuoted()},
        {"Country".GetDoubleQuoted()},
        {"CustomerID".GetDoubleQuoted()},
        {"Phone".GetDoubleQuoted()}
     ) VALUES ('Chicago', 'Amisys','Jwk', 'USA','aaa', '123456')
     Returning {"City".GetDoubleQuoted()} into :city";
 cmd.Connection = con;
 cmd.Parameters.Add(new OracleParameter
     {
         ParameterName = ":city",
         OracleDbType = OracleDbType.Varchar2,
         Size = 32000,
         Direction = ParameterDirection.ReturnValue
     });
 cmd.ExecuteNonQuery();
 var value= cmd.Parameters[":city"].Value.ToString();

注意:32000varchar2 列的最大大小。

【讨论】:

  • 谢谢 Roy,我得到了预期的返回值。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
  • 2016-06-07
  • 2018-08-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多