1

我为 ADS v10 beta 创建了基于 .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;本机错误 = 5154; [iAnywhere 解决方案][Adv​​antage SQL][ASA] 错误 5154:存储过程执行失败。ProcError 20683:这是一条测试错误消息

和电话

EXECUTE PROCEDURE TestSP_AEP (123);

产生错误:

poQuery:错误 7200:AQE 错误:状态 = HY000;本机错误 = 5154; [iAnywhere Solutions][Adv​​antage SQL][ASA] 存储过程执行失败。

我坚持下去。请指教。

谢谢,伊万 Eryshov。

4

1 回答 1

2

我试过了,并确认你是正确的。这是 v10 中的一个新问题。它应该在第一次服务更新中修复。__error如果 AEP 有输入参数,则表中的错误详细信息将丢失。目前尚不清楚是否有立即解决此问题的方法。

根据过程要执行的工作,另一种方法可能是使用脚本存储过程。如果脚本不直接与操作系统交互(例如,进行系统调用),那么脚本可能是一个不错的选择。它们有时更容易开发。SQL 调试器也可以帮助处理该过程。

于 2010-06-11T17:02:19.660 回答