Sybase 存储过程调用问题的输出

本文关键字:输出 问题 调用 存储过程 Sybase | 更新日期: 2023-09-27 18:31:50

我有一个Sybase存储过程签名,如下所示:

CREATE PROCEDURE dbo.spGui_AddENtity (@entity varchar(10), @category varchar(100),
                                              @debug smallint = 0,
                                              @retval smallint output, @errmsg varchar(255) output)

我正在尝试用 C# 执行它,但它抱怨缺少 retval 参数。你知道为什么吗?我想不通,我已经尝试了很多东西......

        // Adding also extra output params and debug one
        AseParameter extraParam = command.CreateParameter();
        extraParam.ParameterName = "@retval";
        extraParam.Direction = ParameterDirection.InputOutput;
        extraParam.AseDbType = AseDbType.SmallInt;
        extraParam.Value = 0;
        command.Parameters.Add(extraParam);
        extraParam.ParameterName = "@errmsg";
        extraParam.Direction = ParameterDirection.InputOutput;
        extraParam.AseDbType = AseDbType.NChar;
        extraParam.Value = "null";
        command.Parameters.Add(extraParam);
        // Finally executing the query`
        try
        {
            var retval = command.ExecuteNonQuery();

日志:

2013-09-19T16:51:31.293297 [信息] {线程:UI} 参数 - 名称:@retval, 值: 0, 数据库类型: Int16, AseDb类型: 小整数, 方向: 输入输出 2013-09-19T16:51:31.293297 [信息] {线程:UI} 参数 - 名称:@errmsg, 值: null, DbType: AnsiStringFixedLength, AseDbType: NChar, 方向:输入输出 2013-09-19T16:51:31.324555 [错误] {线程:UI} 过程 spGui_AddNewRegularName 需要参数@retvals,这 没有提供。 at Sybase.Data.AseClient.AseCommand.CheckResult(Int32 res) at Sybase.Data.AseClient.AseCommand.Execute() at Sybase.Data.AseClient.AseCommand.ExecuteNonQuery()

谢谢!

Sybase 存储过程调用问题的输出

问题是傻瓜的 C# 问题...每次都必须创建参数,而不是使用前一个参数,即放在每个块的开头:

AseParameter extraParam = command.CreateParameter();

另外,另一个问题是我需要将方向设置为:

extraParam.Direction = ParameterDirection.Output;