Advertisement
parabola949

SQL Temp Tables, Cursor

Mar 25th, 2014
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 1.38 KB | None | 0 0
  1. DECLARE @TempTableNames TABLE ( Name NVARCHAR(MAX), ResultTable NVARCHAR(MAX) )
  2. INSERT INTO @TempTableNames
  3. SELECT DISTINCT CollectionName, ResultTableName
  4. FROM [CM_PS1].[dbo].[Collections]
  5.  
  6. DECLARE @TempCollectionStats TABLE ( Name NVARCHAR(MAX), XP_Count INT, Win7_Count INT)
  7. DECLARE @XPCnt INT
  8. DECLARE @7Cnt INT
  9. DECLARE @Para NVARCHAR(MAX)
  10. DECLARE @SQL    NVARCHAR(MAX)
  11. DECLARE @TableName NVARCHAR(MAX)
  12. DECLARE @CollName NVARCHAR(MAX)
  13. DECLARE MY_CURSOR CURSOR
  14.     LOCAL STATIC READ_ONLY FORWARD_ONLY
  15. FOR
  16. SELECT DISTINCT Name, ResultTable
  17. FROM @TempTableNames
  18.  
  19. OPEN MY_CURSOR
  20. FETCH NEXT FROM MY_CURSOR INTO @CollName, @TableName
  21. WHILE @@FETCH_STATUS = 0
  22. BEGIN
  23.     Print @CollName
  24.     Print @TableName
  25.     SET @SQL = 'SET @XPCnt = (SELECT COUNT(*) FROM [CM_PS1].[dbo].[' + @TableName + '] WHERE DeviceOS like ''%Workstation 5%'')'
  26.     SET @Para = '@XPCnt NVARCHAR(10) OUTPUT'
  27.     EXECUTE SP_EXECUTESQL @SQL,@Para,@XPCnt = @XPCnt OUTPUT
  28.  
  29.     SET @SQL = 'SET @7Cnt = (SELECT COUNT(*) FROM [CM_PS1].[dbo].[' + @TableName + '] WHERE DeviceOS like ''%Workstation 6%'')'
  30.     SET @Para = '@7Cnt NVARCHAR(10) OUTPUT'
  31.     EXECUTE SP_EXECUTESQL @SQL,@Para,@7Cnt = @7Cnt OUTPUT
  32.  
  33.     INSERT INTO @TempCollectionStats VALUES(@CollName,@XPCnt, @7Cnt)
  34.  
  35.     FETCH NEXT FROM MY_CURSOR INTO @CollName, @TableName
  36. END
  37. CLOSE MY_CURSOR
  38. DEALLOCATE MY_CURSOR
  39.  
  40. SELECT * FROM @TempCollectionStats WHERE XP_Count > 0 AND Win7_Count > 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement