2010-12-13 4 views
0

SQL Server 2005データベースでは、ストアドプロシージャがあります。私はテンポラリテーブルにそれらを入れるのにいくらかの日付を得ます。私はこの一時テーブルでループをしたいと思って、いくつかのフィールドの値に応じて、他のフィールドの値を変更し、いくつかのチェックを行います。私はこの行ごとにこれを行う必要があります。T-SQLのループ、フィールド値の取得方法

どうすればいいですか?

おかげで、

UPDATE1

BEGIN 
    SET NOCOUNT ON 

    --Create temp table 
    CREATE TABLE #MyTempTable(
     id  int IDENTITY(1, 1), 
     PriceMax int, 
     PriceMin int 
    ) 

    -- Insert in temp table 
    INSERT INTO #tmpReconciliation (PriceMax, PriceMin) 
     SELECT PriceMax = PriceMaxProduct, 
       PriceMin = PriceMinProduct 
     FROM Products 

    DECLARE @RowNum int 
    SELECT @RowNum = Count(*) From #MyTempTable 
    WHILE @RowNum > 0       
    BEGIN 

     if(....) 
      PriceMin = 0 
       .... 

    END 

    --Drop temp table 
    DROP TABLE #MyTempTable 

END 
+0

少し詳しく説明できますか? – sv88erik

+2

ループ/ while/cursorはおそらく*必須ではありません。いくつかのコードを精緻化して投稿すると、必要な処理を行うためのセットベースのステートメントが提供されます。 – Brad

+0

http://meta.stackexchange.com/questions/71633/how-should-newbies-ask-sql-questionsにアクセスして質問を編集してください。 –

答えて

2

私はWHILE loopCURSORのためのMSDNのドキュメントを参照してください。

DECLARE @Emp_id int 

DECLARE Employee_Cursor CURSOR FOR 
SELECT EmployeeID 
FROM Employee; 

OPEN Employee_Cursor; 
FETCH NEXT FROM Employee_Cursor INTO @Emp_id; 
WHILE @@FETCH_STATUS = 0 
    BEGIN 
     -- Here your actions 
     PRINT @Emp_id 
     FETCH NEXT FROM Employee_Cursor INTO @Emp_id; 
    END; 
CLOSE Employee_Cursor; 
DEALLOCATE Employee_Cursor; 
GO 

は、ここで私は社員を印刷することにしましたが、すべてが可能です:

たとえば、のは、あなたの一時テーブルの名前は、従業員を想像してみましょう。

あなたの小切手は何ですか、また、何か助けが必要な場合は一時テーブルがどのようになっているか教えてください。

+0

+!良いリンクと良い例のために。上記の@ Bradのコメントは、カーソルを使用して値を繰り返し処理する必要はありません。 – wcm

+0

@wcmはい、@ブラッドとあなたの両方が正しいです。 @ Kris-Iが彼の必要性を更新するのを見てみましょう。 – LaGrandMere

+0

FETCHステートメントのINTOの+1 ...! – user523234

関連する問題