2010-12-13 31 views
0

Dans une base de données SQL Server 2005, j'ai une procédure stockée. J'ai une date pour les mettre dans une table temporaire. Je voudrais boucler dans cette table temporaire et en fonction de la valeur de certains champs, changer la valeur des autres et faire quelques vérifications. Je dois le faire pour chaque rangée.Boucle dans T-SQL, comment obtenir la valeur de champ

Comment est-ce que je peux faire ceci?

grâce,

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

Pouvez-vous élaborer un peu? – sv88erik

+2

Une boucle/while/cursor n'est * probablement * pas nécessaire. Si vous développez et publiez du code, nous vous fournirons probablement une instruction basée sur un ensemble pour faire ce dont vous avez besoin. – Brad

+0

Veuillez aller voir http://meta.stackexchange.com/questions/71633/how-should-newbies-ask-sql-questions puis éditez votre question. –

Répondre

2

J'ai lu la documentation MSDN pour WHILE loop et CURSOR.

Par exemple, imaginons votre table temporaire est nommé employé:

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 

Ici j'ai décidé d'imprimer EmployeeId, mais tout est possible. Dites-nous quels sont vos chèques et à quoi ressemblera votre tableau temporaire si vous avez besoin d'aide supplémentaire.

+0

+! pour de bons liens et un bon exemple. Je voudrais réitérer le commentaire de Brad ci-dessus que vous n'avez probablement pas besoin d'itérer sur les valeurs avec un curseur. – wcm

+0

@wcm oui, à la fois @Brad et vous avez raison. Attendons de voir @ Kris-I mise à jour de ses besoins. – LaGrandMere

+0

+1 pour INTO dans l'instruction FETCH ...! – user523234