2017-11-28 6 views
-1

は、私が作成する必要がある500プラスのストアドプロシージャを持っている私のプロジェクトでは、C#を使用してストアドプロシージャを作成し、私はディレクトリからの500のファイルを読むためのアプリケーションを作成した、ODBCクライアント

私が実行しようとしますODBCコマンドを使ってプロシージャを作成し、私はこのエラーを取得:

ERROR [42601] [IBM][CLI Driver][DB2/NT64] SQL0104N

私はこのコードを使用しています:

OdbcDataReader dr = null; 
String Error = ""; 

try 
{ 
    using (OdbcConnection con = new OdbcConnection(connectionStr)) 
    { 
     con.Open(); 

     using (OdbcCommand cmd = new OdbcCommand()) 
     { 
      cmd.Connection = con; 
      cmd.CommandText = sQL_To_Run; 
      dr = cmd.ExecuteReader(); 
     } 
    } 
} 
catch (Exception ex) 
{ 
    Error = $"Error Running {sQL_To_Run} => Error Message: {ex.Message}"; 
    Console.WriteLine(Error); 
} 
+0

それについての詳細を読むことができます。デバッグして、接続またはexecutereaderにスローされているかどうか確認できますか?それは悪い設定やDBのインストールのようです...あなたが接続されているとあなたのデータベースが動作していることを確認できますか? – Jesse

+0

@Jesse、私は上記のコードを使用してストアドプロシージャを削除することができました。今はストアドプロシージャを再作成したいのですが、エラーが発生します。 – Anand

+0

例外に内部例外またはその他の情報がありますか? sql_to_runも共有できますか? – Jesse

答えて

3

使用cmd.ExecuteNonQuery()を理由は選択用です

-1

SPで小数点のある小数点(定数)を使用すると、データベースが10進数のカンマで構成されている場合や、CLIの地域設定が正しくない場合、 tマッチ。あなたはかなり不可解なエラーだとここhttp://www-01.ibm.com/support/docview.wss?uid=swg21352772

+0

私は小数点以下を使用していませんが、DB2が終了文字としてセミコロンを使用しているため、問題があるようです。 odbccommand内に新しい終了文字を指定する方法はありますか? – Anand

+0

@Anand私はそうは思わない。おそらく、#SET TERMINATOR命令をスクリプトの先頭に挿入することができます。たぶん 'cmd.CommandText ="のようなものです。##SET TERMINATOR X'5E '"+ System.Environment.NewLine + sQL_To_Run; //ステートメント終端子をカンマに設定する –