G鑫莹 2022-07-08 11:42 采纳率: 0%
浏览 16
已结题

SQL存储过程返回异常值

SQL存储过程返回异常值

我写了一个存储过程,用来保存库存,若写库存成功,ret = 1;若失败,ret = 2。
在存储过程测试过程中,一切正常。但是在应用程序(VS C#)调用时,返回值一直是3!

//前台(VS c#)执行存储过程
public int StockInConfrimNoManifest(string sino, string username, string barcode, Entry_StockInDetail stockInDetail)
{
int ret = 0;
string sqlStr = "STOCK_IN_OP_NOMANIFEST";
string time = stockInDetail.ProductTime.ToString();
Dictionary<int, SqlParaStruct> paraList = new Dictionary<int, SqlParaStruct>();
paraList.Add(0, new SqlParaStruct("@SINo", sino, SqlParaType.ParaDataType_String, ParameterDirection.Input));
paraList.Add(1, new SqlParaStruct("@UserName", username, SqlParaType.ParaDataType_String, ParameterDirection.Input));
paraList.Add(2, new SqlParaStruct("@Model", stockInDetail.Model, SqlParaType.ParaDataType_String, ParameterDirection.Input));
paraList.Add(3, new SqlParaStruct("@InQuantity", stockInDetail.InQuantity, SqlParaType.ParaDataType_Int, ParameterDirection.Input));
paraList.Add(4, new SqlParaStruct("@ProductTime", time, SqlParaType.ParaDataType_String, ParameterDirection.Input));
paraList.Add(5, new SqlParaStruct("@BarCode", barcode, SqlParaType.ParaDataType_String, ParameterDirection.Input));

        try
        {
            using (IDataAccess ida = DataAccessFactory.getInstence())
            {
                ida.EnterQuery();
                ret = ida.ExecuteProcedure(sqlStr, paraList);//1成功 2失败,但是一直返回3
                ida.LeaveQuery();
            }
        }
        catch (Exception ex)
        {
            Logger.Error(string.Format("[数据库]关闭数据库连接异常:{0}{1}",
                ex.Message.ToString(), ex.StackTrace.ToString()));
        }
        return ret;         
    }

// 具体实现 ExecuteProcedure

    public int ExecuteProcedure(string name, Dictionary<int, SqlParaStruct> para)
    {
        int ret = 0;
        try
        {
            SqlCommand cmd = this.CreateCommand(name);
            cmd.CommandTimeout = 300000000;
            cmd.CommandType = CommandType.StoredProcedure;

            if (para != null)
            {
                AttachParameters(cmd, para);
            }

            ret = cmd.ExecuteNonQuery();
            if (ret != 0)
            {
                GetParameter(cmd, para);
            }
            return ret;
        }
        catch (Exception ex)
        {

        }
        return ret;
    }
返回值ret应该应该为1或者2,但是一直返回的是3
我的解答思路和尝试过的方法
为什么会这样,怎么解决
  • 写回答

1条回答 默认 最新

  • foreverliuyin 2022-07-08 16:10
    关注

    你的Procedure具体怎么写的?有没有output参数?

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月12日
  • 创建了问题 7月8日

悬赏问题

  • ¥15 sap for java
  • ¥15 如何添加系统级别的屏幕边框
  • ¥100 图像处理,如何优化使得清晰
  • ¥15 请求看看这个仿真电路哪里有问题?
  • ¥100 关于python拓展屏使用pyautogui.screenshot无法截图的问题
  • ¥15 有偿求答 无导出权限怎么快速导出企业微信微文档
  • ¥15 求解答,怎么数码管中这么加入闹钟或者传感器,这应该怎么加入相应的代码
  • ¥15 scottplot5
  • ¥30 想问问这个建模怎么编程没有思路
  • ¥15 关于imageENview(ImageEN)中新建图层并根据鼠标位置添加图标