2012-02-04 8 views
2

WHILEループ( 'C' & 'P'という2つの値のみ)でcharの配列をループし、この変数をSQL文で使用したい。T-SQL:whileループのような配列を使用する

擬似コード:

WHILE SELECT 'C' UNION SELECT 'P' 
BEGIN 
    SELECT @Var -- Do real sql-statement here 
END 


私はこの作業コードをしましたが、これは、よりエレガント/簡単に/より良い書き込むことができる場合、私は不思議でしたか?

DECLARE @Var CHAR(1) 
DECLARE @counter INT 
SET @counter = 0 
WHILE @counter < 2 
BEGIN 
    SELECT @Var = 
    CASE @counter 
     WHEN 0 THEN 'C' 
     ELSE 'P' 
    END 

    SELECT @Var -- Do real sql-statement here 
    SET @counter = @counter + 1 
END 


明確にするために、実際のSQL文のようなものです:単純に使用

INSERT INTO MyTable 
    SELECT A, B, @Var FROM AnotherTable WHERE ExportStatus = 'F' 
+2

本当にあなたがしようとしている '本当のsql'に依存します。一般的に、ループを避けることができるはずですが、必ずしもそうではありません。これに本当にループが必要な場合は、あなたが持っているものは大丈夫です。あるいは、 'FAST_FORWARD READONLY Cursor'を考えて、それを使って入力データをループすることもできます。 – MatBailie

答えて

2

INSERT INTO MyTable 
    SELECT * FROM AnotherTable WHERE ExportStatus 
     IN (SELECT 'C' UNION ALL SELECT 'P') 
+0

時には解決策は単純ですが、ありがとうございます。 –

+0

@Stef、すべての独創的なものは簡単です。どういたしまして! –

0

をちょうどテーブルに挿入します。

SQLでの操作の実行が良好 であり、配列を表に配置して表に対して操作を実行できます。

関連する問題