【发布时间】:2013-11-27 06:26:50
【问题描述】:
我有一个表值函数,如下所示。当我试图同时传递多个参数时,我收到一个错误,例如“函数指定了太多参数”。
CREATE FUNCTION [dbo].[GetCompanyUsers](@CompanyId BIGINT)
RETURNS @Users TABLE (Id BIGINT,Contact NVarchar(4000))
AS
BEGIN
INSERT INTO @Users(Id,Contact)
SELECT [Id]
,ISNULL([FirstName],'')+' ' +ISNULL([LastName],'') AS [Contact]
FROM [dbo].[CompanyAddressesContacts]
WHERE [CompanyId]=@CompanyId
ORDER BY ISNULL([FirstName],'')+' ' +ISNULL([LastName],'')
RETURN
END
我需要在上面的代码中进行哪些修改,以便它允许多个值,并且我需要在我的数据集中的“WHERE”条件下使用该函数。
WHERE(Document_RFIs.CreatedBy IN
(SELECT Id FROM dbo.GetCompanyUsers(@CompanyId)))
【问题讨论】:
-
您是否尝试过使用这样的连接? INNER JOIN dbo.GetCompanyUsers(@CompanyId) GCU ON GCU.Id = Document_RFI.CreatedBy
-
你传递了多少个参数?
-
@Raphael 是的,我试过了。但是我得到了同样的错误“过程或函数指定了太多参数”
-
参数的数量可能会因所选公司的数量而异。它可以在 1 到多个之间变化,例如dbo.GetCompanyUsers(23,24,25)
-
companyid 值是如何传递到 sql 中的? SQL 中的参数数量不能变化。他们在哪里
selected?
标签: sql sql-server-2008 tsql reporting-services ssrs-2008