2011-01-17 13 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

良い1つの感謝yar ........... – gauravghodnadikar

+0

これは本当に醜いですし、後にユニオンがあります。だけでなく、CASEステートメントがひどいです..あなたが答えを受け入れることができない場合、それはちょうど "WHERE @ i = 1"と "WHERE @ i = 2"でなければなりません – RichardTheKiwi

+1

@cyberwiki - それは本当にかなり醜いです私はそれを使用することをお勧めしましたが、それはクエリに答えることに注意してください... – Paddy