Sql 如果视图中存在删除表,则会导致关键字“IF”附近的语法不正确。消息

Sql 如果视图中存在删除表,则会导致关键字“IF”附近的语法不正确。消息,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的视图中的以下代码在关键字“IF”附近生成错误消息语法不正确 请问这个怎么编码 A只能包含SELECT语句,您拥有的更像一个 A只能包含SELECT语句,您拥有的更像是A 我认为SQL Server不提供此功能。作为一种解决方法,您可能希望在存储过程中执行逻辑 我认为SQL Server不提供此功能。作为一种解决方法,您可能希望在存储过程中执行逻辑 我不明白你想做什么。您是说,每当有人对IDW_vwGetProductOutPut视图运行任何查询时,您都希望删除并重新创建TempPackagi

我的视图中的以下代码在关键字“IF”附近生成错误消息语法不正确

请问这个怎么编码

A只能包含SELECT语句,您拥有的更像一个

A只能包含SELECT语句,您拥有的更像是A


我认为SQL Server不提供此功能。作为一种解决方法,您可能希望在存储过程中执行逻辑

我认为SQL Server不提供此功能。作为一种解决方法,您可能希望在存储过程中执行逻辑

我不明白你想做什么。您是说,每当有人对IDW_vwGetProductOutPut视图运行任何查询时,您都希望删除并重新创建TempPackaging表吗??这实际上不是视图的用途。您不能在视图中使用临时表,请使用CTE或存储过程或表函数如何使用CTE?在视图中发生这种情况的原因是,为了从我存储的某个进程中获取数据,我需要首先执行该数据并将其加载到一个诱人的进程中,然后加入该进程以从主视图获取结果集中的信息。创建另一个SP,该SP将调用现有SP并将数据存储在表变量中,然后将其连接到其他表并返回数据,在视图中调用此新SP通常可以通过重构查询来删除临时表。如果您向我们展示如何填充包装,那么我们可能可以为您探索。我不明白您想做什么。您是说,每当有人对IDW_vwGetProductOutPut视图运行任何查询时,您都希望删除并重新创建TempPackaging表吗??这实际上不是视图的用途。您不能在视图中使用临时表,请使用CTE或存储过程或表函数如何使用CTE?在视图中发生这种情况的原因是,为了从我存储的某个进程中获取数据,我需要首先执行该数据并将其加载到一个诱人的进程中,然后加入该进程以从主视图获取结果集中的信息。创建另一个SP,该SP将调用现有SP并将数据存储在表变量中,然后将其连接到其他表并返回数据,在视图中调用此新SP通常可以通过重构查询来删除临时表。如果您向我们展示如何填充TempPackaging,那么我们可能可以为您探索这一点。您可以简化您的If-to:If对象_-ID'tempdb..TempPackaging'不是NULL BEGIN。。。。。END@JTC-是的,这是我的做法,但我试图坚持OP的原始代码,而不是混淆问题。您可以简化您的if-to:if对象_ID'tempdb..TempPackaging'不是NULL BEGIN。。。。。END@JTC-是的,我会这么做的,但我试图坚持OP的原始代码,而不是混淆问题。
ALTER VIEW [dbo].[IDW_vwGetProductOutPut] 
AS  
IF EXISTS
( SELECT * FROM tempdb.dbo.sysobjects 
  WHERE ID = OBJECT_ID(N'tempdb..#TempPackaging')) 
BEGIN
    DROP TABLE #TempPackaging 
END  . . . . . .     

--code to create temp table goes here . .  and so on
CREATE PROC [dbo].[IDW_spGetProductOutPut] 
AS  
IF EXISTS
( SELECT * FROM tempdb.dbo.sysobjects 
  WHERE ID = OBJECT_ID(N'tempdb..#TempPackaging')) 
BEGIN
    DROP TABLE #TempPackaging 
END  . . . . . .     

--code to create temp table goes here . .  and so on