带有INSERT语句的外部申请

时间:2018-07-10 02:16:03

标签: sql sql-server-2016

我想做这样的事情

CREATE TABLE #tempFacilitiesAssociated 
(
     FacilityID BIGINT, 
     FacilityName VARCHAR(MAX), 
     IsPrimary BIT
)

-- Insert statements for procedure here
;WITH CTE_RESULT AS 
(
    SELECT
        usr_id, t.name AS Title, 
        usr_fname, usr_lname, primaryAddress.add_suburb,
        CASE
           WHEN primaryAddress.add_suburb = @suburb THEN 1
           WHEN t.name = @Title THEN 2
           ELSE 3
        END AS MatchOrder
    FROM
        core_users u
    LEFT JOIN
        RIDE_ct_title t ON t.title_id = u.usr_title
    OUTER APPLY
        (INSERT INTO #tempFacilitiesAssociated 
             EXEC dbo.[sp_Common_Get_AllFacilitiesForSupervisor] usr_id, 5

         SELECT TOP 1 fa.* 
         FROM CORE_Facilities f 
         LEFT JOIN CORE_FacilityAddresses fa ON fac_id = fa.add_owner
         WHERE fac_id = (SELECT TOP 1 FacilityID 
                         FROM #tempFacilitiesAssociated 
                         WHERE IsPrimary = 1)) primaryAddress
    WHERE
        u.usr_fname = @FirstName AND usr_lname = @LastName
)

因此,首先,我想通过存储过程获取该用户的所有设施,然后将其用于外部申请并选择其郊区

更新

我尝试使用函数代替

CREATE FUNCTION fn_GetAddressForUserFacility
    (@UserID BIGINT)
RETURNS @Address TABLE (FacilityID BIGINT, 
                        add_address NVARCHAR(MAX), 
                        add_addressline2 NVARCHAR(MAX), 
                        add_suburb NVARCHAR(MAX) 
                       )
AS
BEGIN
    DECLARE @FacilitiesAssociated TABLE
                                  (FacilityID BIGINT, 
                                   FacilityName NVARCHAR(MAX), 
                                   IsPrimary BIT)

    INSERT INTO @FacilitiesAssociated 
        EXEC dbo.[sp_Common_Get_AllFacilitiesForSupervisor] @UserID, 5

    INSERT INTO @Address
        SELECT TOP 1 
            fa.add_owner, fa.add_address, fa.add_addressline2, fa.add_suburb 
        FROM 
            CORE_Facilities f 
        LEFT JOIN 
            CORE_FacilityAddresses fa ON f.fac_id = fa.add_owner AND add_type = 5
        WHERE
            fac_id = (SELECT TOP 1 FacilityID 
                      FROM @FacilitiesAssociated 
                      WHERE IsPrimary = 1)  
    RETURN 
END

但是现在它返回了

  

在函数中无效使用副作用运算符'INSERT EXEC'。

0 个答案:

没有答案