我有一个像这样的 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 [INFO] {线程:UI} 参数 - 名称:@retval,值:0,DbType:Int16,AseDbType:SmallInt,方向:InputOutput 2013-09-19T16:51:31.293297 [INFO ] {线程:UI} 参数 - 名称:@errmsg,值:null,DbType:AnsiStringFixedLength,AseDbType:NChar,方向:InputOutput 2013-09-19T16:51:31.324555 [错误] {线程:UI} 过程 spGui_AddNewRegularName 需要参数 @ retvals,未提供。在 Sybase.Data.AseClient.AseCommand.CheckResult(Int32 res) 在 Sybase.Data.AseClient.AseCommand.Execute() 在 Sybase.Data.AseClient.AseCommand.ExecuteNonQuery()
谢谢你!