2017-09-19 18 views
0

データベース管理者が書き込んだストアドプロシージャから出力パラメータを取得しようとしています。ここにストアドプロシージャがあります。ストアドプロシージャから出力パラメータの値を取得

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の背後にあるコードです。私はEntity Frameworkを使用しています。

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 

私はエラーを取得していない午前、データはデータベースに保存されますが、私は、正しい方法は、ストアドプロシージャからの出力値を取得するためにいただきました!知りません。出力パラメータの値を取得する最善の方法を提案してください。

答えて

0

ストアドプロシージャフォームEFを削除してプロジェクトに再追加すると、問題が解決しました。

0

、ストアドプロシージャを削除する複合体を作成し、あなたのロジックでこのようなことの出力値をバインドします

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; 
    } 
関連する問題