0

複数の結果セットを返す mvc プロジェクトからストアド プロシージャを実行しようとするとエラーが発生したため、Sp を次のように分割することにしました。Entity Framework データベース ファーストのアプローチを使用しています。

これは私の元のストアドプロシージャでした:

  Create PROCEDURE [dbo].[uspMarket_test]
@UserID INT OUTPUT,
@Session VARCHAR(36)
  AS
  BEGIN
SET NOCOUNT ON;

    SELECT TOP 1
        FirstName, LastName, grant
    FROM dbo.test_Users AS U
    WHERE
       U.userID = @UserID 
       AND CAST (U.userHashKey as varchar(36)) = @Session;

    select
       GS.Account, GSA.Permissions
    from user_name GS 
    Inner join user_name_Apps GSA on GS.ID = GSA.ID
    where GS.UserID = @UserID

    UPDATE dbo.test_Users 
    SET grant = 0
    WHERE
     userID = @UserID
     ;

    END

今、私はこれを次のように2つに分割しました:

   USE [Tracker]
   GO
  SET ANSI_NULLS ON
   GO

   SET QUOTED_IDENTIFIER ON
  GO

   Create PROCEDURE [dbo].[Market_Scope]
@UserID INT OUTPUT
  AS
    BEGIN
SET NOCOUNT ON;

SELECT TOP 1

       GS.Account, GSA.Permissions
     from user_name GS 
     Inner join user_name_Apps GSA on GS.ID = GSA.ID
       where GS.UserID = @UserID
 ;
          END
           GO

2番目のSPは次のとおりです。

    USE [Tracker]
   GO
   SET ANSI_NULLS ON
   GO

   SET QUOTED_IDENTIFIER ON
   GO

   Create PROCEDURE [dbo].[Market_Users]
          @UserID INT OUTPUT,
        @Session VARCHAR(36)
        SELECT TOP 1
       FirstName, LastName, grant
        FROM dbo.test_Users AS U
     WHERE
      U.userID = @UserID 
     AND CAST (U.userHashKey as varchar(36)) = @Session;
    UPDATE dbo.test_Users 
     SET grant = 0
    WHERE
    userID = @UserID
     ;

    END
     Go

今、私はクラスでこのようにこれら2つのSPを呼び出しています:

     public void permissions(string sess)
    {
        using (var ctx2 = new Tracker_Entities())
        {  
       ctx2.uspMarket_Users(new ObjectParameter("UserID", typeof(int)), sess);
       ctx2.uspMarket_list(new ObjectParameter("UserID",typeof(int)));
       ctx2.SaveChanges();
        }
      }

これは、コントローラーで呼び出す方法です:

  public ActionResult Index(string sess)
    {

        var permissions = new Accept();
        permissions.permissions(sess);



        return View();
     }

両方のSPがレコードを選択するだけなので、user_name_appsテーブルにダミーデータを入力しました。では、この SP が適切に実行されているかどうかをフロントエンドで確認するにはどうすればよいですか? SQLサーバーで実行でき、そこで正常に動作しています.しかし、SPを正しく呼び出していることを確認したい. どうすればこれを行うことができますか?

4

0 に答える 0