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()
谢谢!
问题是傻瓜的 C# 问题...每次都必须创建参数,而不是使用前一个参数,即放在每个块的开头:
AseParameter extraParam = command.CreateParameter();
另外,另一个问题是我需要将方向设置为:
extraParam.Direction = ParameterDirection.Output;