0

まず、sp_GetWorkQByUserNameのコードは次のとおりです。

    ALTER PROCEDURE [dbo].[sp_GetWorkQByUserName]
    ( @UserName varchar(50),
      @StartDate datetime,
      @EndDate datetime )
    AS
    BEGIN
        SET NOCOUNT ON;
        SELECT DISTINCT SpotId FROM tblSpotCount WHERE StoreNum = EXECUTE sp_GetUserLocationCodes(@UserName)
        ORDER BY SpotDt ASC 
    END

私のSELECT DISTINCT発言が間違っていることは知っていますが、私がやろうとしていることを示すのを助けるために、そのように書きました。sp_GetUserLocationCodesパラメータが。のからの結果に基づいて、このストアドプロシージャを実行したいと思います@UserName

私が言えることから、私の問題は私がどのように呼んでいるかにありますsp_GetUserLocationCodes

質問:ストアドプロシージャの結果に基づいてSELECT DISTINCTクエリを実行するにはどうすればよいですか?tblSpotCount.SpotIdsp_GetUserLocationCodes

4

1 に答える 1

1

ストアド プロシージャをクエリで直接使用することはできません。ただし、ストアド プロシージャの結果を一時テーブルに挿入し、それをクエリで使用することはできます。

CREATE TABLE #storeLocations
(
    -- appropriate column names and data types go here
)

INSERT INTO #storeLocations (put column list here)
EXECUTE sp_GetUserLocationCodes(@UserName)

SELECT DISTINCT SpotId
FROM tblSpotCount
WHERE EXISTS (SELECT 1
              FROM #storeLocations
              WHERE #storeLocations.StoreNum = tblSpotCount.StoreNum)
ORDER BY SpotDt ASC

DROP TABLE #storeLocations
于 2012-07-17T15:28:45.163 に答える