[dba-SQLServer]Sproc runs and then it doesn't

Francisco H Tapia my.lists at verizon.net
Mon Jul 28 18:01:33 CDT 2003


I have a stored procedure in my database that runs fine in QA.  In fact I
created 2 versions of this sproc and both of them run fine in QA.  In an ADP
that I have one sproc runs and the other does not.  What would be different?

In the where clause I am checking for >= or <.

The code is "I D E N T I C A L" in both sprocs lets call them stp_New and
stp_Old  the new checks for any new entries since today 12:00am, and the Old
checks for any records older than today at 12:00am.

If I run the sproc in Access (ADP) it does not give me any data for stp_New
but it does give me the correct results for stp_Old.  If I go to QA I can
run either sproc and they both execute correctly.  I am at a loss about this
one... anyone ever run into something similar?

This is my code...

----------------------------------------------------------------------------
----------------------------
ALTER            PROCEDURE stp_004A_lstHelpDeskNewCalls (@LoginID
NVARCHAR(50)) AS

SET NOCOUNT ON
Declare @SetDateTime as datetime, @entryUser as uniqueidentifier
SET @entryUser = dbo.udfEntryUSER(@LoginID)
SET @SetDateTime = CAST (
       CAST (DATEPART(m, getUTCdate()) AS VARCHAR(4)) + '/' +
       CAST (DATEPART(d, getUTCdate()) AS VARCHAR(4))+ '/' +
       CAST (DATEPART(yyyy, getUTCdate()) AS VARCHAR(4)) + ' 00:00:00'
   AS DATETIME)

IF EXISTS (select * from tempdb.dbo.sysobjects where id =
object_id(N'tempdb..#MaxStatus')) BEGIN
 DROP TABLE #MaxStatus
END
 CREATE TABLE #MaxStatus
 ([HelpDeskID] [UniqueIdentifier] Not Null,
 [HelpStatusID] [int] Not Null,
 [entryTime] [dateTIME] Not Null)
 INSERT INTO #MaxStatus(HelpDeskID, HelpStatusID, entryTIME)
  Select A.HelpDeskID, A.HelpStatusID, A.entryTIME FROM
dbo.tbl_HelpDeskStatus AS A WITH(NOLOCK)
  LEFT OUTER JOIN
  (SELECT HelpDeskID, Max(entryTIME) as entryTIME From
dbo.tbl_HelpDeskStatus  WITH(NOLOCK) Group By HelpDeskID) AS B
  ON (A.HelpDeskID = B.HelpDeskID AND A.entryTIME = B.entryTIME AND
HelpStatusID < 2)

IF EXISTS (select * from tempdb.dbo.sysobjects where id =
object_id(N'tempdb..#HelpDeskCallDetails')) BEGIN
 DROP TABLE #HelpDeskCallDetails
END
 CREATE TABLE #HelpDeskCallDetails
 ([HelpDeskID] [uniqueidentifier] Not Null,
  [CallNotes] [nvarchar](20) Null,
  [ContactAddrID] [uniqueidentifier] Null,
  [entryTIME] [datetime] Null,
  [entryUSER] [uniqueidentifier] Null)

 INSERT INTO #HelpDeskCallDetails (HelpDeskID, CallNotes, ContactAddrID,
entryTIME, entryUSER)
  Select A.HelpDeskID, LEFT(A.CallNotes, 20), A.ContactAddrID, A.entryTIME,
A.entryUSER FROM dbo.tbl_HelpDeskCallDetails AS A  WITH(NOLOCK)
  INNER JOIN
  (SELECT HelpDeskID, Max(entryTIME) as entryTIME From
dbo.tbl_HelpDeskCallDetails  WITH(NOLOCK) Group By HelpDeskID) AS B
  ON (A.HelpDeskID = B.HelpDeskID AND A.entryTIME = B.entryTIME )



Select HD.CaseNumberID, M.SN,Ctc.ContactName,Co.CompanyName,
Addr.LocationName,ZipList.State,
  HelpDeskCallDetails.CallNotes AS [Call Notes],
HelpDeskCallDetails.entryTIME
FROM dbo.tbl_HelpDesk HD WITH(NOLOCK) INNER JOIN dbo.tbl_Machine M
WITH(NOLOCK)  ON HD.MachineID = M.MachineID

 LEFT OUTER JOIN
  (SELECT * FROM #MaxStatus WITH(NOLOCK) ) AS MaxStatus
  ON HD.HelpDeskID = MaxStatus.HelpDeskID

 INNER JOIN
  (SELECT * FROM #HelpDeskCallDetails WITH(NOLOCK) ) AS HelpDeskCallDetails
  ON HD.HelpDeskID = HelpDeskCallDetails.HelpDeskID

 LEFT OUTER JOIN dbo.tbl_ContactAddress AS CtcAddr  WITH(NOLOCK) ON
HelpDeskCallDetails.ContactAddrID = CtcAddr.ContactAddrID
 LEFT OUTER JOIN dbo.tbl_Contacts AS Ctc  WITH(NOLOCK) ON CtcAddr.ContactID
= Ctc.ContactID
 LEFT OUTER JOIN dbo.tbl_Address As Addr  WITH(NOLOCK) ON CtcAddr.AddrID =
Addr.AddrID
 LEFT OUTER JOIN dbo.tbl_Company AS Co  WITH(NOLOCK) ON  Addr.CompanyID =
Co.CompanyID
 LEFT OUTER JOIN dbo.tbl_AddrZipList AS ZipList  WITH(NOLOCK) ON Addr.ZipID
= ZipList.ZipID

--THIS LINE BELOW IS WHAT CHANGES from >= to <, both run in QA, but only the
OLD (<) runs in Access

Where HelpDeskCallDetails.entryTIME >=  @SetDateTime AND
HelpDeskCallDetails.entryUSER = @entryUser

ORDER BY HelpDeskCallDetails.entryTIME ASC


IF EXISTS (select * from tempdb.dbo.sysobjects where id =
object_id(N'tempdb..#MaxStatus')) BEGIN
 DROP TABLE #MaxStatus
END
IF EXISTS (select * from tempdb.dbo.sysobjects where id =
object_id(N'tempdb..#HelpDeskCallDetails')) BEGIN
 DROP TABLE #HelpDeskCallDetails
END

SET NOCOUNT OFF


-Francisco
http://rcm.netfirms.com




More information about the dba-SQLServer mailing list