Rufen Sie in C # 2010, ODP.net, das Array für die Übergabe gespeicherter Prozeduren auf

Ich habe eine gespeicherte PL / SQL-Prozedur, die 4 Eingaben akzeptiert. Eine dieser Eingaben ist ein assoziatives Array (Oracle-Typ: Tabelle des VARCHAR2 (1) -Index von PLS_INTEGER).

Ich möchte ein C # -Programm haben, das diese gespeicherte Prozedur mit den richtigen Eingaben einschließlich des assoziativen Arrays aufruft.

Ich verwende ODP.net 11.2 mit Visual C # 2010 Express und Oracle 11gR2.

Ich kann keine guten Beispiele für die Übergabe eines Arrays an eine pl / sql-Prozedur von C # finden. Kann mir jemand ein Beispiel geben? Das Befolgen der Oracle-Dokumentation gibt mir genau den Fehler, dass ich die falsche Anzahl oder Art der Argumente angegeben habe.

Mein C # Code:

        OracleCommand cmd = new OracleCommand("begin sdg_test.sdg_test2(:1); end;", conn);

        OracleParameter Param1 = cmd.Parameters.Add("1", OracleDbType.Varchar2);

        Param1.Direction = ParameterDirection.Input;

        Param1.CollectionType = OracleCollectionType.PLSQLAssociativeArray;

        Param1.Value = new string[22] { "Y", "Y", "N", "Y", "N", "Y", "Y", "Y", "Y", "Y", "N", "Y", "N", "Y", "Y", "Y", "Y", "Y", "N", "Y", "N", "Y" };

        Param1.Size = 22;
        Param1.ArrayBindSize = new int[22] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };

        cmd.ExecuteNonQuery();

        conn.Close();
        conn.Dispose();

Alles, was ich tun muss, ist eine Nachricht zu protokollieren. Ich versuche nur, dieses Konzept zum Laufen zu bringen.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage