Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Kembalikan nilai variabel sql dari dalam Oracle Sql Query kembali ke kode .NET

Anda ingin menggunakan ODP.NET (Komponen Akses Data Oracle Oracle):

Contoh di bawah ini. Perhatikan bahwa di ODP.NET, Anda dapat menetapkan arah parameter (input, inputoutput, output, nilai balik) agar sesuai dengan parameter prosedur atau pernyataan yang Anda jalankan. Dalam contoh ini, saya mengambil nilai balik, yang merupakan ID yang dihasilkan oleh db melalui urutan dan pemicu (yang dibuat secara otomatis sejauh menyangkut aplikasi .NET):

int event_id = 0;
using (OracleConnection oraConn = new OracleConnection(connStr))
{
    string cmdText = @"insert into EVENT
        (EVENT_NAME, EVENT_DESC)
        values
        (:EVENT_NAME, :EVENT_DESC)
        RETURNING EVENT_ID INTO :EVENT_ID
        ";

    using (OracleCommand cmd = new OracleCommand(cmdText, oraConn))
    {
        oraConn.Open();
        OracleTransaction trans = oraConn.BeginTransaction();
        try
        {
            OracleParameter prm = new OracleParameter();
            cmd.BindByName = true;
            prm = new OracleParameter("EVENT_NAME", OracleDbType.Varchar2); 
            prm.Value = "SOME NAME"; cmd.Parameters.Add(prm);

            prm = new OracleParameter("EVENT_DESC", OracleDbType.Varchar2); 
            prm.Value = "SOME DESC"; cmd.Parameters.Add(prm);

            prm = new OracleParameter( "EVENT_ID"
                                     , OracleDbType.Int32
                                     , ParameterDirection.ReturnValue); 
            cmd.Parameters.Add(prm);

            cmd.ExecuteNonQuery();
            trans.Commit();
            // return value
            event_id = ConvertFromDB<int>(cmd.Parameters["EVENT_ID"].Value);
        }
        catch
        {
            trans.Rollback();
            throw;
        }
        finally
        {
            trans.Dispose();
        }
        oraConn.Close();
    }
} 

ConvertFromDB hanyalah sebuah generik untuk memberikan nilai kembali ke .NET setara (sebuah int dalam kasus ini).

Semoga membantu.

EDIT:

Anda dapat dengan mudah mengikat array nilai (dan mengambil array nilai kembalian) di ODP.NET:

using (OracleConnection oraConn = new OracleConnection(connStr))
{
    string cmdText = @"insert into TEST_EVENT
        (EVENT_NAME, EVENT_DESC)
        values
        (:EVENT_NAME, :EVENT_DESC)
        RETURNING EVENT_ID INTO :EVENT_ID
        ";

    using (OracleCommand cmd = new OracleCommand(cmdText, oraConn))
    {
        oraConn.Open();
        OracleTransaction trans = oraConn.BeginTransaction();
        try
        {
            string[] event_names = new string[2];
            string[] event_descs = new string[2];
            int[] event_ids = new int[2];

            event_names[0] = "Event1";
            event_descs[0] = "Desc1";

            event_names[1] = "Event2";
            event_descs[1] = "Desc2";

            OracleParameter prm = new OracleParameter();
            cmd.Parameters.Clear();
            cmd.ArrayBindCount = 2;
            cmd.BindByName = true;

            prm = new OracleParameter("EVENT_NAME", OracleDbType.Varchar2); 
            prm.Value = event_names; cmd.Parameters.Add(prm);

            prm = new OracleParameter("EVENT_DESC", OracleDbType.Varchar2); 
            prm.Value = event_descs; cmd.Parameters.Add(prm);

            prm = new OracleParameter( "EVENT_ID"
                                     , OracleDbType.Int32
                                     , ParameterDirection.ReturnValue); 
            cmd.Parameters.Add(prm);


            cmd.ExecuteNonQuery();
            trans.Commit();
            // get return values

            event_ids = (int[])(cmd.Parameters["EVENT_ID"].Value);
        }
        catch
        {
            trans.Rollback();
            throw;
        }
        finally
        {
            trans.Dispose();
        }
        oraConn.Close();
    }
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Masalah tipe karakter Oracle dalam permintaan Hibernate HQL

  2. Pisahkan string di Oracle dengan regexp_substr secara berurutan

  3. Bagaimana cara menempatkan nilai default untuk setiap kolom dalam tabel?

  4. Cara mengakses Oracle DB di VirtualBox dari Host (windows)

  5. kodok untuk dropdown pelengkapan otomatis oracle