簡體   English   中英

使用VARRAY參數的C#調用Oracle 11g過程

[英]C# call to Oracle 11g Procedure with VARRAY parameter

如何從ASP.NET中調用可以接受VArray的Oracle程序包中的存儲過程。 VArray將傳遞鍵列表,存儲過程將使用該鍵來修改適當的記錄。 我知道我可以在單獨的調用中發送密鑰,也可以發送定界列表,但是我寧願使用數組。

假設您使用的是ODP.NET(無論如何都不應該使用System.Data.OracleClient ),這是這樣做的方法:

using System;
using System.Data;
using Oracle.DataAccess.Client;

class SomeClass
{
    void SomeMethod(string connectionString, int[] anArrayOfKeys)
    {
        using (var con = new OracleConnection(connectionString))
        using (var cmd = con.CreateCommand())
        {
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.CommandText = "StoredProcedureNameGoesHere";
            cmd.Parameters.Add(
                "ParameterNameGoesHere",
                OracleDbType.Array,
                anArrayOfKeys,
                ParameterDirection.Input);

            con.Open();
            cmd.ExecuteNonQuery();
        }
    }
}

你嘗試過這個嗎

OracleCommand cmd = OracleConnection1.CreateCommand();
cmd.CommandText = "INSERT INTO ArrayTable VALUES (:CODE, :TITLE, : ARR1, :ARR2)";
...
OracleArray arr1 = new OracleArray("SCOTT.TARRAY1", OracleConnection1);
arr1.Add(10);
arr1.Add(20);
arr1.Add(30);
...
cmd.Parameters["ARR1"].DbType = OracleDbType.Array;
cmd.Parameters["ARR1"].Value = arr1;
...
cmd.ExecuteNonQuery();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM