I have to have a temp table to store some memberIds. I need to drop the table every time because I want its data always be fresh and updated. But I need it to be dropped before it being re-created every time. But it seems somehow SQL-server doesn't execute my whole script.
IF OBJECT_ID('tempdb.dbo.#available_memberIds', 'U') IS NOT NULL
BEGIN
DROP TABLE #available_memberIds;
CREATE TABLE #available_memberIds (
memberId Int,);
Insert into #available_memberIds SELECT memberId
FROM tbl_attendancemembers
WHERE memberId NOT IN
(SELECT memberId
FROM tbl_attendanceSheet)
UNION
SELECT memberId
FROM tbl_attendancemembers
WHERE memberId IN
( SELECT memberId
FROM tbl_attendanceSheet
GROUP BY memberId, date
HAVING COUNT(*) <= 1)
END
When I Highlight the whole code and execute it, it says executing was successful. But when I select * from #available_memberIds
it doesn't show any memberId which means it doesn't insert anything to the table. Although when I highlight only the Insert Into
part individually and select * from #available_memberIds
it shows the memberIds.
Don't I have to write something for the IF conditions else part? I copied everything except the drop part for the else part but when I execute whole code(containing the else part) it always says
There is already an object named '#available_memberIds' in the database.
Which is weird because when I highlight only the drop part and execute it, it says >Can not drop the table
'#available_memberIds', because it does not exist or you do not have permission.
And when I select * from #available_memberIds
it says :
Invalid object name '#available_memberIds'.
IF OBJECT_ID('tempdb.dbo.#available_memberIds', 'U') IS NOT NULL
BEGIN
DROP TABLE #available_memberIds;
CREATE TABLE #available_memberIds (
memberId Int,);
BEGIN
Insert into #available_memberIds SELECT memberId
FROM tbl_attendancemembers
WHERE memberId NOT IN
(SELECT memberId
FROM tbl_attendanceSheet)
UNION
SELECT memberId
FROM tbl_attendancemembers
WHERE memberId IN
( SELECT memberId
FROM tbl_attendanceSheet
GROUP BY memberId, date
HAVING COUNT(*) <= 1)-- and date=@inputdate)
END
END
ELSE
BEGIN
CREATE TABLE #available_memberIds (
memberId Int,);
BEGIN
Insert into #available_memberIds SELECT memberId
FROM tbl_attendancemembers
WHERE memberId NOT IN
(SELECT memberId
FROM tbl_attendanceSheet)
UNION
SELECT memberId
FROM tbl_attendancemembers
WHERE memberId IN
( SELECT memberId
FROM tbl_attendanceSheet
GROUP BY memberId, date
HAVING COUNT(*) <= 1)-- and date=@inputdate)
END
END
I'm writing SQL codes in the visual studio database manager