为什么C#调用存储过程不成功
存储过程:
ALTER PROCEDURE [dbo].[qt_getsyscounter]
@A VARCHAR(6),
@B VARCHAR(4),
@C DATETIME,
@COUNTNUM INT OUTPUT
AS
DECLARE @NUM INT
SET @NUM = (SELECT CountNum AS xh FROM tb1
WHERE (a = @A) AND (b = @B) AND (c = @C))
IF @NUM IS NULL
BEGIN
UPDATE tb1 SET c = @C, CountNum = 1 WHERE (a = @A) AND (b = @B)
SET @COUNTNUM = 1
return @COUNTNUM
END
ELSE
BEGIN
SET @COUNTNUM = @NUM + 1
UPDATE tb1 SET CountNum = CountNum + 1 WHERE (a = @A) AND (b = @B)
return @COUNTNUM
END
调用程序:
public void AddStoredParm(SqlCommand scAdd, ParameterDirection IO, SqlDbType valType, string paramName, object paramValue)
{
SqlParameter param = new SqlParameter();
param.Direction = IO;
param.SqlDbType = valType;
param.ParameterName = paramName;
param.Value = paramValue;
scAdd.Parameters.Add(param);
}
public string GetSerial(string A, string B)
{
int iSerial = 1;
SqlCommand scSerial = new SqlCommand();
scSerial.Connection = UserConn;
scSerial.CommandType = CommandType.StoredProcedure;
scSerial.CommandText = "qt_getsyscounter";
DataConn.AddStoredParm(scSerial, ParameterDirection.Input, SqlDbType.VarChar, "@A", A);
DataConn.AddStoredParm(scSerial, ParameterDirection.Input, SqlDbType.VarChar, "@B", B);
DataConn.AddStoredParm(scSerial, ParameterDirection.Input, SqlDbType.DateTime, "@C", DateTime.Now.Date);
DataConn.AddStoredParm(scSerial, ParameterDirection.Output, SqlDbType.Int, "@COUNTNUM", @iSerial);
int iRow = scSerial.ExecuteNonQuery();
string strSerial;
strSerial = strSerType + DateTime.Now.ToString("yyMMdd") + iSerial.ToString("#00000");
return strSerial;
}
现在SQL SERVER 中直接运行存储过程能够成功,但用程序调用不成功,iSerial没有发生改变,这是为什么啊