Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
Author |
Topic |
rudba
Constraint Violating Yak Guru
415 Posts |
Posted - 2009-03-06 : 10:01:10
|
How do i open cursor for two different select? USE MasterGODECLARE @DW VARCHAR(20) SET @DW = DATENAME(dw, GETDATE())DECLARE C CURSOR FOR If @DW='Saturday' SELECT [name] FROM sys.Databases WHERE [name] NOT IN ('tempdb') Else IF @DW='Sunday' SELECT [name] FROM sys.Databases WHERE [name] LIKE ('DB10%') Else SELECT [name] FROM sys.Databases WHERE [name] LIKE ('XYZ%') OPEN c FETCH NEXT FROM c INTO @name WHILE @@FETCH_STATUS = 0 BEGIN Print 'Database : '+ @name + ' processing'If @DW='Saturday'BEGIN--i have to do something hereENDElse IF @DW='Sunday'BEGIN--i have to do something hereEND FETCH NEXT FROM c INTO @name END CLOSE c DEALLOCATE c |
|
TG
Master Smack Fu Yak Hacker
6065 Posts |
Posted - 2009-03-06 : 10:22:34
|
One solution could be to use your IF/ELSE blocks to populate the appropriate db names into a temp table. Then declare your cursor for whatever db names ended up in your temp table.Be One with the OptimizerTG |
|
|
pootle_flump
1064 Posts |
Posted - 2009-03-06 : 10:24:30
|
quote: Originally posted by rudba How do i open cursor for two different select?
That's a much better question!How about:USE MasterGODECLARE @DW VARCHAR(20)SET @DW = DATENAME(dw, GETDATE())DECLARE C CURSOR FORSELECT [name] FROM sys.Databases WHERE ([name] NOT IN ('tempdb') AND @DW='Saturday')OR([name] LIKE ('DB10%') AND @DW='Sunday')OR([name] LIKE ('XYZ%') AND @DW NOT IN('Sunday', 'Saturday'))OPEN cFETCH NEXT FROM c INTO @nameWHILE @@FETCH_STATUS = 0BEGINPrint 'Database : '+ @name + ' processing'--i have to do something hereFETCH NEXT FROM c INTO @nameENDCLOSE cDEALLOCATE c EDIT - missed a parethen....a paren.... a par... a bracket. |
|
|
rudba
Constraint Violating Yak Guru
415 Posts |
Posted - 2009-03-06 : 10:28:39
|
Thanks pootle_flump,quote: Originally posted by pootle_flump
quote: Originally posted by rudba How do i open cursor for two different select?
That's a much better question!How about:USE MasterGODECLARE @DW VARCHAR(20)SET @DW = DATENAME(dw, GETDATE())DECLARE C CURSOR FORSELECT [name] FROM sys.Databases WHERE ([name] NOT IN ('tempdb') AND @DW='Saturday')OR([name] LIKE ('DB10%') AND @DW='Sunday')OR([name] LIKE ('XYZ%') AND @DW NOT IN('Sunday', 'Saturday'))OPEN cFETCH NEXT FROM c INTO @nameWHILE @@FETCH_STATUS = 0BEGINPrint 'Database : '+ @name + ' processing'--i have to do something hereFETCH NEXT FROM c INTO @nameENDCLOSE cDEALLOCATE c EDIT - missed a parethen....a paren.... a par... a bracket.
|
|
|
|
|
|