-
пусть некто написал хранимку Proc1 create procedure Proc1 as SELECT 'string1' A, 2 B
я ее использую
declare @T table(A varchar(99), B int) insert @T exec Proc1 declare @S varchar(max) = '' select @S = @S + 'A=' + A + 'B=' + cast(B as varchar(99) + char(13)+char(10) from @T
некто изменил Proc1 SELECT 'string1' as [A], 2 as [B], 0 as C
у меня все сломалось, и я захотел на будущее обезопаситься insert #T exec Proc1 declare @S varchar(max) = '' select @S = @S + ??? from #T
как далее перебрать колонки?
как сделать что-то вроде for i:= 0 to DS.FieldCount -1 .. s := DS.Field.Name + '=' + DS.Field.asstring
-
можно так, в принципе -
не временную таблицу, а нормальную делать @TableName = [уникальное что-то, типа newid()] @SQL = 'insert ' + @TableName +' exec Proc1' exec(@SQL) через information shema получить столбцы @TableName, сгенерировать новый @SQL 'COLUMN_NAME = ' + COLUMN_NAME + 13+10 и опять exec(@SQL) и не забыть drop @TableName
но могут и побить )
проще никак?
|