sql >> データベース >  >> RDS >> Oracle

C#からOracleプロシージャに配列を渡す

    1. 配列型とプロシージャを定義します:

      CREATE or replace PACKAGE Testpackage AS 
        TYPE Areas_t is table of VARCHAR(100) index by BINARY_INTEGER;
        PROCEDURE TESTPROCEDURE(Areas IN Areas_t);       
      END Testpackage; 
      
    2. C#ルーチン:

      public void InsertQuestion(IEnumerable<string> area_list)
      {
          var connect = new OracleConnection("YOUR CONNECTION STRING");
      
          var command = new OracleCommand("BEGIN Testpackage.Testprocedure(:Areas); END;", connect);
      
          connect.Open();
      
          var arry = command.Parameters.Add("Areas", OracleDbType.Varchar2);
      
          arry.Direction = ParameterDirection.Input;
          arry.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
          arry.Value = area_list.ToArray();
          arry.Size = area_list.Count();
          arry.ArrayBindSize = area_list.Select(_ => _.Length).ToArray();
          arry.ArrayBindStatus = Enumerable.Repeat(OracleParameterStatus.Success, area_list.Count()).ToArray();
      
          command.ExecuteNonQuery();
      
          connect.Close();
      }
      



    1. 年を無視する日付計算をどのように行いますか?

    2. Visual StudioでSSISロードを実行しているときにODBC接続が失敗するのに、パッケージ実行ユーティリティを使用して同じパッケージを実行している場合は失敗するのはなぜですか

    3. PythonでのMongoEngineによるインデックス作成の処理

    4. MySQLをDebian7にインストールする方法