1

ADSv10ベータ用の.NETベースのAEPを作成しました。これが手順コードです。.NET側:

public int TestSP(int connectionId, int connection, ref int numRowsAffected)
{
    AdsConnection cnn;
    lock (_connections)
        cnn = _connections[connectionId];

    using (var cmd = cnn.CreateCommand())
    {
        cmd.CommandText = "INSERT INTO __error (errno, message) VALUES (20683, 'This is a test error message')";
        cmd.ExecuteNonQuery();
    }

    return 0;
}

SQL側:

CREATE PROCEDURE TestSP_AEP(num Integer) 
   FUNCTION "TestSP" IN COMLIBRARY "MyNamespace.MyClass";

CREATE PROCEDURE TestSP_AEP_Empty() -- !NOTE! without parameters
   FUNCTION "TestSP" IN COMLIBRARY "MyNamespace.MyClass";

これらすべてで、私は次のものを持っています。呼び出し

EXECUTE PROCEDURE TestSP_AEP_Empty();

エラーが発生します:

poQuery:エラー7200:AQEエラー:状態= HY000; NativeError = 5154; [iAnywhere Solutions] [Advantage SQL] [ASA]エラー5154:ストアドプロシージャの実行に失敗しました。ProcError 20683:これはテストエラーメッセージです

そして、電話

EXECUTE PROCEDURE TestSP_AEP (123);

エラーが発生します:

poQuery:エラー7200:AQEエラー:状態= HY000; NativeError = 5154; [iAnywhere Solutions] [AdvantageSQL][ASA]ストアドプロシージャの実行に失敗しました。

私はそれに固執しています。ご意見をお聞かせください。

ありがとう、IvanEryshov。

4

1 に答える 1

2

私はこれを試してみて、あなたが正しいことを確認しました。これはv10の新しい問題です。最初のサービスアップデートで修正する必要があります。__errorAEPへの入力パラメータがある場合、テーブルのエラーの詳細は失われます。これに対する即時の回避策があるかどうかは明らかではありません。

プロシージャが実行する作業に応じて、別のアプローチとして、スクリプト化されたストアドプロシージャを使用することもできます。スクリプトがOSと直接対話していない場合(たとえば、システムコールを行う場合)、スクリプトが適切なオプションである可能性があります。それらは開発がより簡単な場合があります。また、SQLデバッガーもそのプロセスに役立ちます。

于 2010-06-11T17:02:19.660 に答える