IF (SELECT COUNT(*) FROM SYS.OBJECTS WHERE NAME LIKE 'TopObjectsforWait') = 1
DROP PROC TopObjectsforWait
GO
-- TopObjectsforWait PROC
--
-- PARMS '@FROM_DATE', '@TO_DATE', '@DBNAME' , '@EVENTNAME'
-- EXAMPLE:
--
-- EXEC TopObjectsforWait '2008-12-29 00:00','2008-12-30 13:00','WT10A_DEMO','CPU'
CREATE PROC TopObjectsforWait
(@FROM_DATE VARCHAR(16), @TO_DATE VARCHAR(16),
@DBNAME VARCHAR(50), @EVENTNAME VARCHAR(50))
AS
DECLARE
@SQL VARCHAR(4000),
@DBID VARCHAR(3)
BEGIN
SELECT @DBID = ID FROM COND WHERE NAME = @DBNAME
SELECT @SQL = 'SELECT ISNULL(OBJ.NAME, ' + '''' + 'N/A' + '''' + ') OBJECT_NAME, SUM(SW.QP/100) TIMESECS ' +
'FROM CONSW_' + @DBID + ' SW LEFT OUTER JOIN CONOBJ_' + @DBID + ' OBJ ' +
'ON SW.HGOB = OBJ.ID INNER JOIN CONEV_' + @DBID + ' EV ON SW.KEEQ = EV.ID ' +
'WHERE SW.D BETWEEN ' +
'CONVERT(DATETIME,' + '''' + @FROM_DATE + '''' + ', 101) AND ' +
'CONVERT(DATETIME,' + '''' + @TO_DATE + '''' + ', 101) ' +
'AND UPPER(EV.NAME) = UPPER(' + '''' + @EVENTNAME + '''' + ') ' +
'GROUP BY ISNULL(OBJ.NAME, ' + '''' + 'N/A' + '''' + ') ' +
'ORDER BY SUM(SW.QP/100) DESC '
EXEC (@SQL)
END
GO