C # 2010, ODP.net, chamada matriz de passagem de procedimento armazenado

Eu tenho um procedimento armazenado PL / SQL que leva 4 entradas. Uma dessas entradas é uma matriz associativa (índice Oracle Tipo: Table of VARCHAR2 (1) de PLS_INTEGER).

Eu quero ter um programa c # que chama esse procedimento armazenado com as entradas adequadas, incluindo a matriz associativa.

Eu estou usando ODP.net 11.2 com Visual C # 2010 Express e Oracle 11gR2.

Não consigo encontrar bons exemplos de como passar uma matriz para um procedimento pl / sql de c #. Alguém pode me dar um exemplo? A seguir, a Documentação do Oracle me fornece exatamente um erro ao dizer Número ou tipo incorreto de argumentos.

Meu código c #:

        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();

Todo meu procedimento é logar uma mensagem. Eu só estou tentando fazer esse conceito funcionar.

questionAnswers(1)

yourAnswerToTheQuestion