将视图结果存储为变量,然后在同一查询中调用它

时间:2017-10-05 11:14:00

标签: sql sql-server view

在SQL服务器中是否可以这样?

DECLARE @SQL int  
SET @SQL = (CREATE VIEW AS SELECT *
        FROM .....
        JOIN.....)

EXEC @SQL

SELECT * FROM 

@SQL

LEFT JOIN.....
ON....

我想加入一个视图的结果。

然后实际选择诸如

之类的变量
join ..... on @SQL.No = ......

2 个答案:

答案 0 :(得分:1)

您的代码没有意义。为什么要使用动态SQL创建视图?您只需创建一个视图:

CREATE VIEW my_view AS
    SELECT *
    FROM ..... JOIN
         .....;

然后,您可以在查询中使用该视图:

select . . .
from my_view join
     . . .

不需要动态SQL。

如果你想要一个"临时视图"对于查询,您可以使用CTE或子查询。

答案 1 :(得分:0)

试试这个:

DECLARE @SQL nvarchar(max) ,
        @viewName nvarchar(50) = 'MyView'

SET @SQL = ('CREATE VIEW ' +@viewName  +'AS SELECT *
            FROM .....
            JOIN.....')

 EXEC sp_executeSQL @SQL

 SET @SQL = ('
 SELECT * FROM ' +  @viewName +'
 LEFT JOIN.....
 ON.... ')

 EXEC sp_executeSQL @sql