pszczyg

ReturningInto4

Dec 16th, 2019
387
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  public long InsertParameter(string paramName, string paramDescription)
  2.         {
  3.             using (var connection = new OracleConnection(ConnectionString))
  4.             {
  5.                 connection.Open();
  6.  
  7.                 var sqlText = "Insert into Parameters (name, description) values (:paramName, :paramDescription) RETURNING ID INTO :nextId";
  8.  
  9.                 using (var command = new OracleCommand(sqlText, connection)
  10.                 {
  11.                     CommandType = CommandType.Text,
  12.                     BindByName = true,
  13.                 })
  14.                 {
  15.                     command.Parameters.Add(
  16.                         new OracleParameter("nextId", OracleDbType.Decimal, sizeof(long))
  17.                         {
  18.                             Direction = ParameterDirection.ReturnValue
  19.                         });
  20.  
  21.                     command.Parameters.Add(new OracleParameter(":paramName", OracleDbType.Varchar2) { Value = paramName });
  22.                     command.Parameters.Add(new OracleParameter(":paramDescription", OracleDbType.Varchar2) { Value = paramDescription });
  23.  
  24.                     command.ExecuteNonQuery();
  25.                     object returnedValue = command.Parameters["nextId"].Value;
  26.                     if (returnedValue == null)
  27.                         return 0;
  28.  
  29.                     OracleDecimal decimalValue = (OracleDecimal)returnedValue;
  30.                     return decimalValue.IsNull ? 0 : decimalValue.ToInt64();
  31.                 }
  32.             }
  33.         }
RAW Paste Data