Sql server SSRS报告多参数选择错误-靠近“,”的语法不正确
我下面的代码在SSMS中运行良好,但在使用SSRS执行时,在数据集附近出现错误语法。我正在尝试通过SSRS选择多个参数 有人能给我引路吗 下面是我的代码Sql server SSRS报告多参数选择错误-靠近“,”的语法不正确,sql-server,reporting-services,msbi,Sql Server,Reporting Services,Msbi,我下面的代码在SSMS中运行良好,但在使用SSRS执行时,在数据集附近出现错误语法。我正在尝试通过SSRS选择多个参数 有人能给我引路吗 下面是我的代码 Declare @Startdate datetime Declare @Enddate datetime Declare @Debug int=0 Declare @TimeZone int=330 Declare @OrganizationId int Declare @OrganizationName varchar(320) Set
Declare @Startdate datetime
Declare @Enddate datetime
Declare @Debug int=0
Declare @TimeZone int=330
Declare @OrganizationId int
Declare @OrganizationName varchar(320)
Set @Startdate ='2016-03-08 00:00:00'
Set @Enddate ='2016-03-09 00:00:00'
--Set @OrganizationName=@POrganization
Declare @Orgname varchar(100)
declare @OrganizationIds int
set @Orgname='Root Org,Maersk Line'
Declare @place TABLE(ID INT IDENTITY,Places varchar(100))
insert into @place (Places) values(@Orgname)
--select * from @place
Declare @RawData Table
(
ROWID int identity(1,1) primary key,
OrgId int,
Orgname varchar(100)
)
;WITH SplitSting AS
(
SELECT
ID,LEFT(Places,CHARINDEX(',',Places)-1) AS Part
,RIGHT(Places,LEN(Places)-CHARINDEX(',',Places)) AS Remainder
FROM @place
WHERE Places IS NOT NULL AND CHARINDEX(',',Places)>0
UNION ALL
SELECT
ID,LEFT(Remainder,CHARINDEX(',',Remainder)-1)
,RIGHT(Remainder,LEN(Remainder)-CHARINDEX(',',Remainder))
FROM SplitSting
WHERE Remainder IS NOT NULL AND CHARINDEX(',',Remainder)>0
UNION ALL
SELECT
ID,Remainder,null
FROM SplitSting
WHERE Remainder IS NOT NULL AND CHARINDEX(',',Remainder)=0
)
--select * from SplitSting
insert into @RawData(OrgName,OrgId)
SELECT S.Part,O.ID FROM SplitSting S
JOIN ORGANIZATION O
ON S.Part=O.NAME
--select * from @RawData
DECLARE @RowCount INT
Declare @String varchar(100)
SELECT @RowCount = COUNT(*) FROM @RawData
WHILE (@RowCount>0)
BEGIN
set @String=convert(varchar,@OrganizationIds)+','
If (@RowCount>0)
Begin
PRINT 'Loop Sequence : ' + convert(varchar,@RowCount) + ' '
set @OrganizationIds = (SELECT OrgId FROM @RawData WHERE ROWID = @RowCount)
PRINT 'Orgid Inside Loop:' + Convert(varchar,@OrganizationIds)
End
Set @RowCount = @RowCount-1
Set @OrganizationIds = convert(varchar,@OrganizationIds)
PRINT 'Orgid Outside Loop:'+ convert(varchar,@OrganizationIds)
set @String=@String + Convert(varchar,@OrganizationIds)
END
PRINT 'String Value Outside Loop: ' + @String
Declare @TempData Table
(
OrganizationID int
)
insert into @TempData(OrganizationID)
EXEC GetFormsData_Organization @String
我不确定这段代码到底在做什么。我没有把它读透。 但是正如您所说的,这在SSMS中工作得很好,那么将此代码放在SQL Server中的表值函数中,然后使用SSRS数据集中的参数调用该函数怎么样
如果你需要更多的帮助,请告诉我 我不确定这段代码到底在做什么。我没有把它读透。 但是正如您所说的,这在SSMS中工作得很好,那么将此代码放在SQL Server中的表值函数中,然后使用SSRS数据集中的参数调用该函数怎么样
如果你需要更多的帮助,请告诉我 一个问题可能是您正在调用convertvarchar,。。。。没有指定长度。如果未指定,则可能会切断部分查询。不知道为什么它会在SSMS中工作,而不是在其他地方。此外,每次回到循环的顶部时,您都会将@String重置为@OrganizationIds+,“您将只打印序列中的最后两个数字。SSRS不就是希望有一个select语句吗?我认为您需要一个存储过程。一个问题可能是您正在调用convertvarchar,。。。。没有指定长度。如果未指定,则可能会切断部分查询。不知道为什么它会在SSMS中工作,而不是在其他地方。此外,每次回到循环的顶部时,您都会将@String重置为@OrganizationIds+,“您将只打印序列中的最后两个数字。SSRS不就是希望有一个select语句吗?我想你需要一个存储过程。谢谢……你能详细解释一下我如何使用表值函数来实现这一点吗?基本上,在SSMS的DatabaseName->Programmability->Functions->Table valued Functions下,你可以创建一个函数,比如XYZparameter1,parameter2。。。。{}然后在数据集中,您可以从Databasename、.XYZparameter1、parameter2。。。这个链接应该会有帮助-谢谢…你能详细解释一下我如何使用表值函数来实现这个功能吗?基本上,在SSMS的DatabaseName->Programmability->Functions->Table valued Functions下,你可以创建一个函数,比如XYZparameter1,parameter2。。。。{}然后在数据集中,您可以从Databasename、.XYZparameter1、parameter2。。。这个链接应该会有所帮助-