Как закодирован, то PurchaseOrders
таблица удаляется до SELECT
IF OBJECT_ID('PurchaseOrders') IS NOT NULL
DROP TABLE PurchaseOrders; -- <<< this breaks the SELECT FROM
SELECT *
INTO PurchaseOrdersCopy
FROM PurchaseOrders; -- <<< can't possible exist, the IF...DROP saw to it
И так как вы используете SELECT...INTO
, вы, вероятно, означает PurchaseOrdersCopy
Но, это было бы намного лучше
-- create an empty table, but just once, otherwise empty the existing table
IF OBJECT_ID('dbo.PurchaseOrdersCopy') IS NULL
SELECT *
INTO dbo.PurchaseOrdersCopy
FROM dbo.PurchaseOrders
WHERE 1=0
ELSE IF EXISTS (SELECT * FROM dbo.PurchaseOrdersCopy )
DELETE FROM dbo.PurchaseOrdersCopy; -- HINT: see if TRUNCATE TABLE dbo.PurchaseOrdersCopy is an option for you
-- this will be longer if you have an IDENTITY column
-- SET IDENTITY_INSERT ON (for example)
INSERT INTO dbo.PurchaseOrdersCopy
SELECT *
FROM dbo.PurchaseOrders;
В частности:
а) попытаться избежать DROP и CREATE, когда вы можете
б) префикс для ваших имен объектов с именем схемы (dbo.
по умолчанию)
проблемы: как это будет работать, если процедура может выполняться более одного раза или более чем одним человеком (dbo.PurchaseOrdersCopy является общим)
Код не работает на 'FROM PurchaseOrders;' – oakrun
Это должно потерпеть неудачу, так как вы отбросили таблицу 'PurchaseOrders'. –
Было бы разумнее, если бы вы уронили 'PurchaseOrdersCopy' вместо' PurchaseOrders' –