複数の結果セットを返す 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を正しく呼び出していることを確認したい. どうすればこれを行うことができますか?