Конференция "Прочее" » mssql, результат хранимки, заранее не извесный рекордсет
 
  • ВладОшин © (25.10.16 17:21) [0]
    пусть некто написал хранимку 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
  • ВладОшин © (25.10.16 17:34) [1]
    можно так, в принципе -

    не временную таблицу, а нормальную делать
    @TableName = [уникальное что-то, типа newid()]
    @SQL = 'insert ' + @TableName +' exec Proc1'
    exec(@SQL)
    через information shema получить столбцы @TableName, сгенерировать новый @SQL
    'COLUMN_NAME = ' + COLUMN_NAME + 13+10
    и опять exec(@SQL)
    и не забыть drop @TableName

    но могут и побить )

    проще никак?
 
Конференция "Прочее" » mssql, результат хранимки, заранее не извесный рекордсет
Есть новые Нет новых   [134431   +14][b:0][p:0]