0

私のストアド プロシージャは 1 つのパラメーターを受け取り、単一の値を返します。私の要件は、 company id を持つテーブルのすべての行にストアド プロシージャを呼び出すことです。私はこれを試しましたが、うまくいきません

SELECT CompanyID,CompanyName,EmailID,'Exec Usp_GetCount' 

+CONVERT(varchar(256),companyID) 'Employees' from Tbl_Company

ありがとう

4

2 に答える 2

0

これを試してみてください -

SP の場合:

DECLARE @temp TABLE
(
      CompanyID INT
    , Cnt INT
)

DECLARE @CompanyID INT

DECLARE cur CURSOR FAST_FORWARD READ_ONLY FOR
    SELECT DISTINCT CompanyID 
    FROM dbo.Tbl_Company

OPEN cur

FETCH NEXT FROM cur INTO @CompanyID

WHILE @@FETCH_STATUS = 0 BEGIN

    DECLARE @Result INT
    EXEC @Result = dbo.Usp_GetCount CONVERT(VARCHAR(256), @CompanyID)

    INSERT INTO @temp (CompanyID, Cnt)
    SELECT @CompanyID, @Result

    FETCH NEXT FROM cur INTO @CompanyID

END

CLOSE cur
DEALLOCATE cur

SELECT 
      c.CompanyID
    , c.CompanyName
    , c.EmailID
    , Employees = t.Cnt
FROM dbo.Tbl_Company c
JOIN @temp t ON t.CompanyID = c.CompanyID

スカラー関数の場合:

SELECT 
      c.CompanyID
    , c.CompanyName
    , c.EmailID
    , Employees = dbo.GetCount(c.CompanyID)
FROM dbo.Tbl_Company c
于 2013-05-07T13:06:11.103 に答える