我想創建一個存儲過程,將能夠限制使用部門ID返回的記錄數。我試圖通過加入臨時表來限制記錄。SQL Server 2008 R2 - 爲什麼我的臨時表認爲它有一個標識列?
當我運行下面的代碼,我得到的錯誤:
An explicit value for the identity column in table '#department' can only be specified when a column list is used and IDENTITY_INSERT is ON.
下面的代碼:
DECLARE @departmentID INT
SET @departmentID = 4
-- create temp department table --
select top 0 * into #department from PayrollDepartment
-- load temp department table
IF @departmentID < 1 OR @departmentID IS NULL
BEGIN
INSERT INTO #department SELECT * FROM PayrollDepartment
END
ELSE
BEGIN
INSERT INTO #department SELECT * FROM PayrollDepartment WHERE PayrollDepartmentID = @departmentID
END
我開始:
IF @departmentID < 1 OR @departmentID IS NULL
BEGIN
SELECT * INTO #department FROM ApplicationEmployeeInfo..PayrollDepartment
END
ELSE
BEGIN
SELECT * INTO #department FROM ApplicationEmployeeInfo..PayrollDepartment WHERE PayrollDepartmentID = @departmentID
END
,但我得到的錯誤:
There is already an object named '#department' in the database
我不是SQL專家,所以也許有更好的方法來做到這一點?
你需要在#department之後做任何事情嗎?或者你只是返回結果? – GarethD
如果你做了一個'SELECT TOP 0 * INTO ...',你已經創建了表。你不能再次使用'INTO'。你需要一個'INSERT ... SELECT' – Kermit
這是一個報告。我試圖使存儲過程「動態」,以便我可以獲取所有員工記錄,或者只是部門的記錄。我試圖避免使用硬編碼的SQL,並且我沒有兩個代碼塊(或存儲過程),其中唯一的區別是where子句。 – user3033282