KCTechNet
asked on
Dynamic Enumerate items procedure
In Microsoft Access I have used a custom function (usually called DList) which would accept the table name, field name, and search criteria as parameters. It would output a comma seperated list of the values in FieldName from the table where the search criteria is true.
In SQL Server 2000, is there a way to have a stored procedure return the same string output given the same input parameters?
In SQL Server 2000, is there a way to have a stored procedure return the same string output given the same input parameters?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
had to make a couple changes, but worked good.
CREATE PROCEDURE [dbo].[usp_DList]
(
@table varchar(200),
@column varchar(200),
@where varchar(200)
)
AS
declare @strSQL as nvarchar(2000)
declare @params as nvarchar(2000)
declare @x1 as nvarchar(2000)
set @strSQL = 'select @x = coalesce(@x + '','', '''') + cast(' + @column + ' as varchar) from ' + @table + ' where ' + @where
set @params = N'@x varchar(2000) OUTPUT'
exec sp_executeSQL @strSQL, @params, @x = @x1 OUTPUT
select @x1
GO
CREATE PROCEDURE [dbo].[usp_DList]
(
@table varchar(200),
@column varchar(200),
@where varchar(200)
)
AS
declare @strSQL as nvarchar(2000)
declare @params as nvarchar(2000)
declare @x1 as nvarchar(2000)
set @strSQL = 'select @x = coalesce(@x + '','', '''') + cast(' + @column + ' as varchar) from ' + @table + ' where ' + @where
set @params = N'@x varchar(2000) OUTPUT'
exec sp_executeSQL @strSQL, @params, @x = @x1 OUTPUT
select @x1
GO
ASKER
I chaned it a bit more to make it extremely flexible:
CREATE PROCEDURE [dbo].[usp_DList]
(
@SQLfrom varchar(2000),
@column varchar(25)
)
AS
declare @strSQL as nvarchar(2000)
declare @params as nvarchar(2000)
declare @x1 as nvarchar(2000)
set @strSQL = 'select @x = coalesce(@x + '','', '''') + cast(' + @column + ' as varchar) from ' + @SQLfrom
set @params = N'@x varchar(2000) OUTPUT'
exec sp_executeSQL @strSQL, @params, @x = @x1 OUTPUT
select @x1
-- sample use: exec dbo.usp_DList 'LanguageCodes as lc Inner Join ServicesLanguages sl on lc.LanguageCodeID = sl.LanguageCodeID Where ServiceID = 13','Language'
GO
CREATE PROCEDURE [dbo].[usp_DList]
(
@SQLfrom varchar(2000),
@column varchar(25)
)
AS
declare @strSQL as nvarchar(2000)
declare @params as nvarchar(2000)
declare @x1 as nvarchar(2000)
set @strSQL = 'select @x = coalesce(@x + '','', '''') + cast(' + @column + ' as varchar) from ' + @SQLfrom
set @params = N'@x varchar(2000) OUTPUT'
exec sp_executeSQL @strSQL, @params, @x = @x1 OUTPUT
select @x1
-- sample use: exec dbo.usp_DList 'LanguageCodes as lc Inner Join ServicesLanguages sl on lc.LanguageCodeID = sl.LanguageCodeID Where ServiceID = 13','Language'
GO
declare @list varchar(2000)
exec Dlist 'class', 'period', @value=@list output
select @list
Open in new window