【问题标题】:Get value of Output Parameter from stored procedure从存储过程中获取输出参数的值
【发布时间】:2017-09-19 16:59:02
【问题描述】:

我正在尝试从我的数据库管理员编写的存储过程中获取输出参数。这是存储过程。

ALTER PROCEDURE [dbo].[sb_AddStudent]
    -- Add the parameters for the stored procedure here

    @FirstName varchar(25),
    @LastName varchar(25),
    @Address varchar(300),
    @SID int output
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- Insert statements for procedure here
    BEGIN TRANSACTION

INSERT INTO StudentMaster(EntryDate, FirstName, LastName)
        VALUES (getdate(), @FirstName , @LastName);
        IF @@ERROR <> 0
            GOTO ErrorHandler;

        SELECT @SID= max(SID) 
        FROM StudentMaster

COMMIT TRANSACTION
    RETURN 0;


    -- if there is an error after any insert/update statement, it will go here --
    ErrorHandler:
        ROLLBACK TRANSACTION;
        RETURN @@error;             
END

这是我在 vb.net 中的代码。我正在使用实体框架。

 Dim outputParameter As Entity.Core.Objects.ObjectParameter = New Entity.Core.Objects.ObjectParameter("SID ", GetType(Integer))

db.sb_AddStudent(FirstName, LastNmae, Address, outputParameter)

dim SID = outputParameter.Value

我没有收到任何错误,数据已保存到数据库中,但我不知道从存储过程中获取输出值的正确方法是什么。请建议获取输出参数值的最佳方法。

【问题讨论】:

    标签: vb.net entity-framework stored-procedures


    【解决方案1】:

    删除存储过程表单 EF 并将其重新添加到项目中解决了我的问题。

    【讨论】:

      【解决方案2】:

      删除存储过程,创建一个复杂并在您的逻辑中像这样绑定该输出值:

          public List<CompOffModel> GetCompOffRecords(string searchKeyword, string orderBycolumn, string orderByDirection, int start, int length, string StartYearFrom, string EndYearTo, string ApprovedBy, string CreatedBy, string DateFrom, string DateTo, string Name, string Reason, string IsUsed, ref int totalcount, ref int searchCount)
          {
              ObjectParameter objCountParam = new ObjectParameter("outputParameterOfSqlProcedure", 0);
              ObjectParameter objSearchCountParam = new ObjectParameter("outputParameterOfSqlProcedure1", 0);
              List<CompOffModel> result = db.SP_CompOff(searchKeyword, orderBycolumn, orderByDirection, start, length, StartYearFrom, EndYearTo, ApprovedBy, CreatedBy, DateFrom, DateTo, Name, Reason, IsUsed, objCountParam, objSearchCountParam).Select(x => new CompOffModel()
              {
                  ID = x.ID,
                  Name = x.Name,
                  ApprovedBy = x.Approved_By,
                  CreatedByString = x.Created_By,
                  Reason = x.Reason,
                  Date = x.Date,
                  IsUsed = x.IsUsed,
                  NoofCompOff = x.NoOfCompOff
              }).ToList();
      
              totalcount = Convert.ToInt32(objCountParam.Value);
              searchCount = Convert.ToInt32(objSearchCountParam.Value);
              return result;
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-05
        • 2023-03-19
        • 1970-01-01
        • 2016-10-26
        • 2017-02-21
        • 1970-01-01
        • 2010-09-16
        相关资源
        最近更新 更多