下面的程序將運行在SQL Server 2005中確定,但在2008年... Invalid object name 'vTemp'
SQL Server 2008中不能使用動態SQL創建的視圖手續
Create PROCEDURE [dbo].[bulksaverecord]
as
begin
if exists (select * from sysobjects where id=object_id('vTemp'))
begin
drop view vTemp
end
declare @sql nvarchar(max)
set @sql='CREATE VIEW vTemp AS SELECT top 0 FromType,TypeID,AssessUser,
TypeTimeType,AssessTime,ItemRoleKey,UserName,SourceKey,
PartID,PartName,PositionName,ItemID,ItemName,ItemType,ItemScript,
ItemDataSourceName,ItemField,ItemKPI,ItemFun,ItemFunLimit,ItemKill,
AllKill,ItemMark,ItemPower,MarkScript,PowerScript,FromKey
FROM AssessMark'
exec sp_executesql @sql
if exists (select * from sysobjects where id=object_id('vTemp'))
begin
exec ('SELECT * FROM vTemp')
SELECT * FROM vTemp -- throws the error here
end
end
未能看來,視圖中創建在PROCEDURE中使用動態SQL,在DYNAMIC SQL中將有一個範圍,即使VIEW實際上已創建。
如果你想要一個臨時表,爲什麼你不使用一個?視圖並不意味着是模擬對象。 – HLGEM 2013-03-25 19:31:29