Inline function i stored procedure - hvordan lige
Jeg har en function som beregner antal tagne skemaer for en given gruppe og et givet skema:CREATE FUNCTION dbo.AIM_fn_CountTagne
(
-- Add the parameters for the function here
@intSurveyID int,
@groupName varchar(100)
)
RETURNS TABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECT COUNT(dbo.usd_Response.surveyID) AS Tagne
FROM dbo.usd_Response INNER JOIN
dbo.usd_surveyToGroupMap ON dbo.usd_Response.surveyID = dbo.usd_surveyToGroupMap.surveyID INNER JOIN
dbo.usd_userGroupMap ON dbo.usd_Response.userID = dbo.usd_userGroupMap.userID
WHERE (dbo.usd_surveyToGroupMap.groupName = @groupName) AND (dbo.usd_userGroupMap.groupName = @groupName) AND
(dbo.usd_Response.surveyID = @intSurveyID )
)
GO
Den virker fint nok
En eller anden okkenok har lavet en binding, som knytter sig til navnet på gruppen og ikke dets ID, så det skal lige slåes op først og det hele kombineres i en select.
Jeg har forsøgt at køre proceduren med functionen inline:
ALTER PROCEDURE [dbo].[AIM_GrpRspMaxTimes]
-- Add the parameters for the stored procedure here
@intSurveyID int = 0,
@intUserID int = 0
AS
BEGIN
SET NOCOUNT ON;
-- Dette select giver det eller de gruppenavne , som user tilhører qua den valgte surveyid
-- normalt kun en, men....
SELECT usd_userGroupMap.groupName, usd_surveyToGroupMap.MaxResponses,dbo.AIM_fn_CountTagne(@intSurveyID,groupName)
FROM usd_userGroupMap INNER JOIN
usd_surveyToGroupMap ON usd_userGroupMap.groupName = usd_surveyToGroupMap.groupName
WHERE (usd_userGroupMap.userID = @intUserID) AND (usd_surveyToGroupMap.surveyID = @intSurveyID )
END
men får følgende:
Cannot find either column "dbo" or the user-defined function or aggregate "dbo.AIM_fn_CountTagne", or the name is ambiguous.
Var jeg lige lidt for smart ?
Hvor fletter man sådan en fucntion inline i ovenstående ?