I need my select to have a pattern like this:
SELECT \' \' + tbl.* + \' \' FROM table tbl;
The ideal solution wo
I tried a more generic approach
Create Procedure P_GetConcatColumns(@tablename varchar(200),@Seperator Varchar(20),@StartTag Varchar(20),@EndTag Varchar(20),@WhereString Varchar(400),@OrderString Varchar(400)) as
DECLARE @TmpTableName VARCHAR(100),
@Columns NVARCHAR(4000),
@SQL NVARCHAR(MAX),
@GENNAME VARCHAR(100)
Select @GENNAME='##'+Replace(Cast(NewID() as Varchar(40)),'-','')
IF OBJECT_ID('tempdb.dbo.' + @GENNAME) IS NOT NULL
BEGIN
EXEC('DROP TABLE ' +@GENNAME);
END
Select @SQL='SELECT TOP 1 * INTO '+@GENNAME+' FROM ' + @tablename
Exec (@SQL)
SET @TmpTableName = 'tempdb.dbo.' + @GENNAME
SELECT @Columns =
STUFF(
(
SELECT '+' + @Seperator + '+CAST(Coalesce(' + c.name + ','''') AS VARCHAR(MAX))' + CHAR(13)
FROM tempdb.sys.columns c
WHERE c.[object_id] = object_Id(@TmpTableName)
FOR XML PATH(''),TYPE
).value('.','VARCHAR(MAX)')
,1,len(@Seperator)+2,'')
--SET @SQL = N'SELECT ' +''''+ @StartTag +''''+'+'+ @Columns +''''+'+'+ @EndTag + ''' FROM ' + @tablename
SET @SQL = N'SELECT ''' +@StartTag+ '''+'+ @Columns +'+'''+ @EndTag + ''' FROM ' + @tablename
+' '+Coalesce(@WhereString,'')
+' '+Coalesce(@OrderString,'')
Print @SQL
EXEC sp_executeSQL @SQL
--ExampleCall P_GetConcatColumns 'Arten',''',''','',' ','where id>1','Order by ID desc'