Member 10766684 Ответов: 1

Оператор IF с динамическим кодом


привет,

у меня есть столик

.....|Работы||
_____|_____|_________|

.....| 001 / >= |
.....| 009 / <= |


Возможно ли создать динамическое если?

пример

DECLARE @myvar
SET @myvar ='070'


DECLARE @operation
DECLARE @Value
SELECT @operation = operation from mytable
SELECT @value = value from mytable


IF @myvar + @operation + @Value


Заранее спасибо

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

я попытался объединить свою переменную, но боюсь, что это невозможно

[no name]

Не могли бы вы прислать полный формиат состояния?

Tomas Takac

Можно строить и запускать SQL на лету-зависит от того, что вы пытаетесь сделать. Поэтому опубликуйте весь свой соответствующий код и объясните, в чем проблема. Но если вас сдерживает страх, то это не тот форум.

Member 10766684

это мой код

НАЧАТЬ


Объявить курсор db_cursor для
Выберите положение, длину, значение, операцию
От ДБО.RulesStringLabel
где Custom = '0'

Открыть db_cursor
Принести следующий из db_cursor в положение@, @длина, @значение, операция @

В ТО ВРЕМЯ КАК @@FETCH_STATUS = 0
НАЧАТЬ

SELECT @ValueCheck = SUBSTRING (@Label, @Position, @Length)
Выберите @OperationString = @Operation +' '+@Value

Если @ValueCheck + @OperationString




Принести следующий из db_cursor в положение@, @длина, @значение, операция @
КОНЕЦ

Закрыть db_cursor
Освободить db_cursor




КОНЕЦ

Member 10766684

Моя проблема заключается в том, что оператор if я не могу перевести...

1 Ответов

Рейтинг:
0

RossMW

См. Небольшой пример ниже.

Declare @A nvarchar(100)
Declare @S nvarchar(100)
Declare @T nvarchar(10)

Select @T = '1 '
Select @A = ' = 2'
Select @S = 'if ' + @T +  @A + ' begin Select * from Table where SomeField = '''xx''' end'
Select @S --Display resultant SQL Statement only
EXECUTE sp_executeSQL @S


Принцип, лежащий в основе этого, состоит в том, чтобы создать строку, которая является вашим SQL-оператором, из имеющихся у вас условий, а затем выполнить этот SQL-оператор. (надеюсь, оператор if не слишком длинный)

Видеть sp_executesql (Transact-SQL)[^]

При создании инструкции SQL будьте осторожны с одинарными кавычками, так как они должны быть добавлены по мере необходимости. Я также добавил пример этого.

например, " а "в операторе select в конечном итоге станет"а".

Видеть Как включить одинарную кавычку в sql-запрос[^]

То, что вы должны в конечном итоге получить, - это SQL-оператор в виде большого nvarchar или строки, которая может быть выполнена.