SQL Server 2008存储过程不能删除它不存在的临时表
这是我最后一个问题的延续。现在我试图创建一个存储过程,但是我无法执行它。当我执行它时,显示错误消息 “无法删除表#MyReport”,因为它不存在或您没有权限。
请指导我在正确的方向。
下面是我的存储过程
Create PROCEDURE [dbo].[SEL_MyReport]
(
@employeeid int,
@date1 datetime,
@date2 datetime
)
AS
BEGIN
drop table #MyReport
Create Table #MyReport
(
employeeid int,
name varchar(30),
department varchar(30),
checkTime datetime
)
if (@employeeid > 0)
Begin
INSERT INTO #MyReport (employeeid,name, department, checkTime)
select emp.EmpolyeeID, emp.Name,dep.DeptName,tm.checkTime
from TimeInOut tm
left join Employee emp on emp.EmpolyeeId = tm.EmployeeId
left join Department dep on dep.DeptID = emp.defaultDeptID
where (DATEDIFF(s,@date1,tm.checktime) >=0
and DATEDIFF(s,@date2,tm.checktime)<=0) and emp.employeeID = @employeeid
SELECT
employeeid
,name
,department
,[Time In] = MIN(checkTime)
,[Time Out] = MAX(checkTime)
FROM #MyReport
GROUP BY employeeid,name, department, CAST(checktime AS DATE)
End
Else
Begin
INSERT INTO #MyReport (employeeid,name, department, checkTime)
select emp.EmpolyeeID, emp.Name,dep.DeptName,tm.checkTime
from TimeInOut tm
left join Employee emp on emp.EmpolyeeId = tm.EmployeeId
left join Department dep on dep.DeptID = emp.defaultDeptID
where (DATEDIFF(s,@date1,tm.checktime) >=0
and DATEDIFF(s,@date2,tm.checktime)<=0)
SELECT
employeeid
,name
,department
,[Time In] = MIN(checkTime)
,[Time Out] = MAX(checkTime)
FROM #MyReport
GROUP BY employeeid,name, department, CAST(checktime AS DATE)
End
END
Go
exec SEL_MyReport('639','05/01/2014','05/08/2014')
不应该有任何需要您的存储过程开始时为你放弃一个临时表。 –
同意Damien - 事实上,我不确定你需要使用#table - “SELECT”应该足够吗? – MarkD