2011-01-17 5 views
0

Как писать курсор, если таблица не исправлена. курсор с оператором if

например
DECLARE cursor_1 CURSOR 
FOR 
IF BEGIN @i=1 SELECT col1,col2 FROM table_1 END 
ELSE BEGIN SELECT col1,col2 FROM table_2 END 

...

Это дает синтаксическую ошибку, пожалуйста, предлагаешь?

+2

Это сервер sql справа? Yum может захотеть взглянуть на динамический sql и команду exec. – SWeko

+1

избегайте использования курсоров, если вам действительно не нужно. И даже тогда, не используйте их! –

+0

Да, немного больше фоновой информации о проблеме было бы неплохо. – SWeko

ответ

2

Это на самом деле работает, если вы пишете это правильно !

IF @i=1 
declare cur cursor for 
    SELECT col1,col2 FROM table_1 
ELSE 
declare cur cursor for 
    SELECT col1,col2 FROM table_2 
0

его уродливое рубить, и вы, возможно, будет лучше с динамическим SQL, или переписывание это в более разумным способом, но:

DECLARE cursor_1 CURSOR 
FOR 
    SELECT col1, col2 FROM table_1 
    WHERE @i = 1 
    UNION 
    SELECT col1, col2 FROM table_2 
    WHERE @i = 2 
+0

Хорошая благодарность yar ........... – gauravghodnadikar

+0

Это поистине уродливое и даже имеет конечный UNION. Не только то, что оператор CASE ужасен .. Он должен быть просто «WHERE @ i = 1» и «WHERE @ i = 2» ... если только вы можете не принимать ответы – RichardTheKiwi

+1

@cyberwiki - это действительно довольно уродливо, и вы «Правильно о предложении where - обратите внимание, что я рекомендовал не использовать его, но он отвечает на запрос ... – Paddy

Смежные вопросы