通过select * from exec(MySP)创建视图

时间:2012-06-18 20:43:55

标签: sql sql-server-2008

我创建了具有动态列数的数据透视表,但要实现这一点,我需要创建一个字符串Query并使用Exec('MyStringQuery')运行它,这是我获得我想要的结果的唯一方法。

现在我想使用我的Pivot表创建一个View。因为在View中我无法运行Exec(myQry)

我想创建一个函数并在那里运行我的查询,然后在我的View中使用它,但是我无法创建一个表变量来将结果放在那里,因为我的列数我每次运行查询时都会有所不同。

我怎样才能做到这一点?

create View myView
as
select * from exec(MySP)

当我尝试运行它时,它会给我一个错误。

非常感谢您的意见。

2 个答案:

答案 0 :(得分:3)

我终于找到了问题的答案 我创建了一个Store过程并使用了OpenRowset并创建了我的视图

Create MyView

AS

SELECT  *FROM 

  OPENROWSET( 'SQLNCLI',
                    'Server=SERVERNAME;Trusted_Connection=yes;',
                    'SET FMTONLY OFF; SET NOCOUNT ON; exec DatabaseName.dbo.MySP @A=1,@B=2')

答案 1 :(得分:1)

抱歉,你不能用视图做到这一点。您不能将参数传递给视图,也不能在视图中使用动态SQL。您也无法在函数中执行动态SQL,因此它无法在那里工作。你害怕,你需要调用一个存储过程才能做到这一点。