Member 13945339 Ответов: 1

Вытягивание из переменной во временную таблицу


Это кусочек всего проекта. То, что я пытаюсь сделать, это выбрать @Begin execute @Begin, а затем поместить эти результаты цикла While в #While_Loop temptable, но я продолжаю придумывать ничего не помещая в Temp или просто строку, которую @begin помещает в Temp. По сути, мне просто нужна помощь с синтаксисом раздела "вставить в"

Объявить @TTWhile varchar(30)
Если @ProgID <> 0 выберите @TTwhile = '#temp_prog_course_list_GR'
Если @ConcID <> 0 выберите @TTWhile = '#temp_prog_course_list_UG'


объявить @Begin nvarchar(max)


Выберите @Begin = '
объявите @ctr int, @max int, @Coursecode varchar(25), @Coursecode2 varchar(50), @courseCodeList varchar(max), @CourseCodeList2 varchar(max)
set @ctr = 1


Выберите @max = max(RecordID) из ' + @TTWhile + '


В то время как @ctr <= @max
Начать

Выберите @CourseCode = ltrim(rtrim(courseCode))
Из ' + @TTwhile + ', где RecordID = @ctr

Выберите @courseCodeList = coalesce(@courseCodeList + "," + @CourseCode, @CourseCode)


Выберите @CourseCode2 = " максимум("+функция ltrim(функция rtrim(courseCode))+") как"+функция ltrim(функция rtrim(courseCode))+"]"
Из '+ @TTwhile + ', где RecordID = @ctr

Выберите @courseCodeList2 = coalesce(@courseCodeList2 + "," + @courseCode2, @courseCode2)

Выберите @ctr = @ctr + 1
Конец'



exec (@begin)


Создать Таблицу #While-Цикл
(cc1 nvarchar(макс.),
cc2 nvarchar(макс.))


Вставить в #While_Loop --select (cc1, cc2)
От @begin


Объявить @cc1 varchar(max), @cc2 varchar(max)
выберите @СС1 = (СС1 от #while-цикл)
выберите @СС2 = (выберите СС2 от #while-цикл)

Что я уже пробовал:

выберите * в

Вставить в ... exec

и т.д...

1 Ответов

Рейтинг:
2

Alek Massey

Так же сильно, как мне не нравится просто выбрасывать туда код.

Insert into #While_Loop (@courseCodeList, @courseCodeList2)

Вы выполняете varchar @begin как sql-скрипт, поэтому переменные, которые вы создаете внутри него, существуют в среде, из которой вы его запустили. Они доступны сами по себе после его запуска, а не как часть какой-то микросреды, на которую ссылается имя varchar.

Вероятно, вам следует реорганизовать весь этот бизнес @begin в хранимую процедуру, которая возвращает интересующие вас 2 переменные в качестве выходных параметров.