У меня есть запрос, который использует курсор для циклического перебора результатов оператора select.
Короче говоря, оператор select выбирает все записи из имеющейся у меня таблицы сопоставления.Один из столбцов - «SourceTableName».
Я использую это поле для создания динамического SQL.
Я хочу добавить параметр к моей хранимой процедуре, обернутый вокруг этого, что позволит мнесоздать только динамический SQL для «SourceTableName», который я хочу - ЕСЛИ я передаю «SourceTableNameFilter».
Я застрял с некоторой логикой, которая оборачивает мой динамический SQL.(Параметр SP) = @SourceTableName (из таблицы сопоставления) BEGIN
Создание и выполнение некоторого динамического SQL на основе SourceTableName.
Проблема заключается в том, что я хочу, чтобы это работало на всех таблицах, которыевернитесь из выбора против 'SourceTableName' НО, если параметр @SourceTableNameFilter присутствует и не равен нулю - тогда генерируйте динамический SQL только для любых строк в курсоре, которые соответствуют моему параметру фильтра.
Есть ли способ для менясделать это с помощью оператора IF, не копируя логику внутри IF / ELSE дважды?
FETCH NEXT FROM TABLECUR INTO @SourceTableName
,@SourceInColumn
,@SourceOutColumn
,@TargetTableName
,@TargetLookupColumn
,@TargetLookupResultColumn
,@MappingTableID
WHILE (@@fetch_status <> -1)
BEGIN
IF (@@fetch_status <> -2)
BEGIN
IF (@SourceTableName = @SourceTableNameFilter)
--GENERATE DYNAMIC SQL
ELSE
--GENERATE DYNAMIC SQL FOR ALL RECORDS
ГенерироватьСтрока динамического SQL одинакова как в случае if, так и в любом другом, чтобы изменить условия так, чтобы я не дублировал динамическое генерирование SQL и не генерировал динамический SQL, когда @SourceTableName! = @SourceTableNameFilter?
Спасибо