1

複数のパラメーターが渡された.NetでODBCコマンドオブジェクトを使用してクエリを作成しています。SQLAnywhereに対してクエリを実行すると、次のエラーが発生します。(同じコードがSQL Serverに対して機能します)。

[System.Data.Odbc.OdbcException] = {"ERROR [07002] [Sybase] [ODBC Driver][SQLAnywhere]ホスト変数に十分な値がありません"}

コマンドオブジェクトには、クエリのプレースホルダー('?')と同じ数のパラメーターが追加されています。以下は、テストに失敗した単純なクエリとC#コードです。

ホスト変数を設定するC#コード

String queryText = @ "DECLARE @loanuseraddress varchar(40)、@loanid decimal Set @loanid =?Set @loanuseraddress =?select * from Loan_assignments where Loan_id = @loanid"

        OdbcConnection connection = new OdbcConnection(request.ConnectionString);
        OdbcCommand command;    

        command = new OdbcCommand(queryText, connection);

        OdbcParameter param1 = new OdbcParameter("@loanid", OdbcType.Decimal);
        param1.Value = request.Loan.LoanNumber;
        command.Parameters.Add(param1);

        OdbcParameter param2 = new OdbcParameter("@loanuseremployer", dbcType.VarChar);
        param2.Value = appraisalCompanyUpdate.LoanUserEmployer;
        if (param2.Value == null)
            param2.Value = DBNull.Value;
        command.Parameters.Add(param2);


        connection.Open();  
        OdbcDataReader rows = command.ExecuteReader();
4

2 に答える 2

5

nullをチェックしてこれを修正しました。null パラメータを Sybase に渡そうとすると、(少なくとも私にとっては) これがエラーになります。ある時点で LoanId が null であると感じます。

編集もう少し調査を行った後、.Net で Sybase ODBC 接続を介して複数の挿入/削除/更新を試行したときにも、このエラーが発生する可能性があると思います。これはサポートされていないと思います.MSDNはベンダー固有であると言っているようです.

于 2010-12-09T16:29:56.400 に答える
2

「不十分なホスト変数」は別のことを意味することもありますが、OP に適用できます。他の原因の 1 つは、SQL ステートメントが使用しているセットとは異なる宣言済み変数のセットを持っている可能性があります。

たとえば、これはタイプミスである可能性があります。または、パラメーター ( など) を使用してデータセット テーブルを埋めるために使用された Visual Studio から SQL をコピーした可能性がありますが、その際に、ストアド プロシージャまたは begin/end:parmで (として) 宣言するのを忘れていました。@parmブロック。

于 2013-09-07T04:02:27.453 に答える