Nom d'objet non valide lors de la création de la procédure stockée
Je suis en train de créer une procédure stockée dans SQL Server 2008. Chaque fois que j'essaie d'exécuter la procédure-je obtenir un nom d'objet non Valide erreur sur le #EDPTS table. Quelqu'un peut s'il vous plait regardez le code ci-dessous pour me faire savoir ce qui pourrait être la création de la question? Je vous remercie à l'avance
use maindb
go
CREATE PROCEDURE DailyStats
AS
set transaction isolation level read uncommitted
DECLARE @STARTDATE DATE, @ENDDATE DATE
SET @ENDDATE = CAST(GETDATE() AS DATE)
SET @STARTDATE = DATEADD(DAY,-1, @ENDDATE)
if OBJECT_ID('tempdb..#EDPTS')is not null
drop table #EDPTS
SELECT DISTINCT PV.[EID]
,ENC.PERSON_ID
,PV.[VisitNumber]
,ENC.MRN
,PER.NAME_FULL_FORMATTED as 'PTName'
,PER.SEX_CD_DESCR as 'Gender'
,CONVERT(varchar,PER.BIRTH_DT_TM,101)as 'DOB'
,DATEDIFF (YEAR,PER.BIRTH_DT_TM,ENC.ARRIVE_DT_TM)as 'ArrivalAge'
,MIN (CHIN.CHECKIN_DT_TM) as 'EDArrival'
,ENC.ADMIT_MODE_CD_DESCR
,ENC.REASON_FOR_VISIT as 'ChiefComp'
,[PatientClass]
,ACCOMMODATION_CD_DESCR as 'Accommodation'
,[AssignedPatientLocationFacility]
,[AdmitSourceDescr]
,[FinancialClass]
,CHIN.CHECKOUT_DISPOSITION_CD_DESCR as 'DCDispo'
,CASE WHEN MAX (CHIN.CHECKOUT_DT_TM) = '2100-12-31 00:00:00.000' then NULL ELSE MAX (CHIN.CHECKOUT_DT_TM)END as 'EDDepart'
,CASE WHEN DATEDIFF (minute,MIN(CHIN.CHECKIN_DT_TM),MAX(CHIN.CHECKOUT_DT_TM))> '1440' then NULL ELSE
DATEDIFF (minute,MIN(CHIN.CHECKIN_DT_TM),MAX(CHIN.CHECKOUT_DT_TM))END as 'EDLOS'
INTO #EDPTS
--finds ed pts
FROM tbl.one
with (nolock)
--more ed data
INNER JOIN tbl.two
with (nolock)
on PV.EID = ENC.EID
--finds demographics
INNER JOIN tbl.three
with (nolock)
on ENC.PERSON_ID = PER.PERSON_ID
--finds ed discharge
LEFT Join tbl.four
with (nolock)
on ENC.EID = CHIN.EID
WHERE AdmissionType = '1'
and CHIN.CHECKIN_DT_TM between @STARTDATE and @ENDDATE
and AccountStatus <> 'CANCELLED
and chin.CHECKOUT_DISPOSITION_CD_DESCR <> 'Duplicate/Accidental Registration'
and enc.ENCNTR_CLASS_CD_DESCR <> 'Preadmit'
and ENC.ENCNTR_CLASS_CD_DESCR <> 'Limited Stay
GROUP BY PV.[EID]
,ENC.PERSON_ID
,PV.[VisitNumber]
,ENC.MRN
,PER.NAME_FULL_FORMATTED
,PER.SEX_CD_DESCR
,CONVERT(varchar,PER.BIRTH_DT_TM,101)
,DATEDIFF (YEAR,PER.BIRTH_DT_TM,ENC.ARRIVE_DT_TM)
,ENC.ADMIT_MODE_CD_DESCR
,ENC.REASON_FOR_VISIT
,[PatientClass]
,ACCOMMODATION_CD_DESCR
,[AssignedPatientLocationFacility]
,[AdmitSourceDescr]
,[FinancialClass]
,CHECKOUT_DISPOSITION_CD_DESCR
GO
if OBJECT_ID('tempdb..#Tri')is not null
drop table #Tri
SELECT EVE.EID
,MIN (CE.PERFORMED_DT_TM)as 'TriStart'
,MIN (EVE.COMPLETE_DT_TM) as 'TriComp'
,MAX(PRSNL.NAME_FULL_FORMATTED) as 'TriNurse'
INTO #Tri
from tbl.one
GO
if OBJECT_ID('tempdb..#Tri2')is not null
drop table #Tri2
SELECT CE.EID
,MAX(CE.RESULT_VAL) as 'Acuity
GROUP BY CE.EID
GO
if OBJECT_ID('tempdb..#EDBed')is not null
drop table #EDBed
if OBJECT_ID('tempdb..#MDtoSee')is not null
drop table #MDtoSee
SELECT EVE.EID
,MIN (EVE.COMPLETE_DT_TM) as 'MDtoSee
SELECT #EDPTS.EID
,#EDPTS.PERSON_ID
,#EDPTS.VisitNumber
,#EDPTS.AssignedPatientLocationFacility
,#EDPTS.MRN
,#EDPTS.PTName
,#EDPTS.Gender
,#EDPTS.DOB
,#EDPTS.ArrivalAge
,MIN(#EDPTS.EDArrival)as EDArrival
,#EDPTS.ADMIT_MODE_CD_DESCR
,#EDPTS.ChiefComp
,#EDPTS.AdmitSourceDescr
,#Tri2.Acuity
,#Tri.TriStart
,#Tri.TriComp
,DATEDIFF (minute,#EDPTS.EDArrival,#Tri.TriStart)
,DATEDIFF (minute,#Tri.TriStart,#Tri.TriComp)
,#Tri.TriNurse
,#EDBed.EDBed
,DATEDIFF (minute,#EDPTS.EDArrival,#EDBed.EDBed)
,#MDtoSee.MDtoSee
,DATEDIFF (minute,#EDPTS.EDArrival,#MDtoSee.MDtoSee)
,#EDPTS.PatientClass
,#EDPTS.FinancialClass
,#EDPTS.Accommodation
,#EDPTS.DCDispo
,MAX(#EDPTS.EDDepart)as EDDepart
,#EDPTS.EDLOS
FROM #EDPTS with (nolock)LEFT JOIN #Tri with (nolock) on #EDPTS.EID = #Tri.EID
LEFT JOIN #Tri2 with (nolock) on #EDPTS.EID = #Tri2.EID
LEFT JOIN #EDBed with (nolock) on #EDPTS.EID = #EDBed.EID
LEFT JOIN #MDtoSee with (nolock) on #EDPTS.EID = #MDtoSee.EID
GROUP BY #EDPTS.EID
,#EDPTS.PERSON_ID
,#EDPTS.VisitNumber
,#EDPTS.AssignedPatientLocationFacility
,#EDPTS.MRN
,#EDPTS.PTName
,#EDPTS.Gender
,#EDPTS.DOB
,#EDPTS.ArrivalAge
,#EDPTS.ADMIT_MODE_CD_DESCR
,#EDPTS.ChiefComp
,#EDPTS.AdmitSourceDescr
,#Tri2.Acuity
,#Tri.TriStart
,#Tri.TriComp
,DATEDIFF (minute,#EDPTS.EDArrival,#Tri.TriStart)
,DATEDIFF (minute,#Tri.TriStart,#Tri.TriComp)
,#Tri.TriNurse
,#EDBed.EDBed
quel objet est-ce qu'il dit n'est pas valide... ce serait important de le savoir 🙂
Est-il lorsque vous essayez de créer ou quand vous l'appelez? Si c'est sur la création, l'exécuter de nouveau, double-cliquez sur le message d'erreur dans le résultat du panneau et il doit mettre en évidence la ligne de l'erreur. Cela peut être utile.
Ah oui, désolé à ce sujet. C'est de me donner un nom d'objet non valide sur la table temp #EDPTS. Merci!
Pourquoi êtes-vous à l'aide de NOLOCK sur toutes vos requêtes? Ne sont-ils pas assez importante de besoin de données précises? Cet indicateur peut et sera de retour à la fois manquantes et/ou de données en double.
Assez sûr de votre besoin de supprimer
Est-il lorsque vous essayez de créer ou quand vous l'appelez? Si c'est sur la création, l'exécuter de nouveau, double-cliquez sur le message d'erreur dans le résultat du panneau et il doit mettre en évidence la ligne de l'erreur. Cela peut être utile.
Ah oui, désolé à ce sujet. C'est de me donner un nom d'objet non valide sur la table temp #EDPTS. Merci!
Pourquoi êtes-vous à l'aide de NOLOCK sur toutes vos requêtes? Ne sont-ils pas assez importante de besoin de données précises? Cet indicateur peut et sera de retour à la fois manquantes et/ou de données en double.
Assez sûr de votre besoin de supprimer
GO
entre vos choisit. Si vous avez exécuté le ci-dessus, il a probablement créé la procédure stockée, terminé ce lot et a ensuite essayé d'exécuter les instructions select résultant dans l'erreur. Laissez-moi savoir si cela a du sens.
OriginalL'auteur AndrewMo | 2014-08-28
Vous devez vous connecter pour publier un commentaire.
GO est à l'origine du problème. C'est la fin de la lot contenant de la création de la PROCÉDURE. Voici ce qui se passe simplifié.
OriginalL'auteur SQLChao