2012-06-18 69 views
1

我创建了具有动态列数的透视表,但是为了实现我需要创建的字符串Query并使用Exec('MyStringQuery')运行它,这是我唯一的方法可以得到我想要的结果。使用select *创建视图(MySP)

现在我想使用我的数据透视表创建一个视图。因为在视图中我不能运行Exec(myQry)

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

我该如何做到这一点?

create View myView 
as 
select * from exec(MySP) 

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

非常感谢您的意见。

+0

为什么这需要一个看法? –

+0

在视图中不能有动态数量的列。所以,即使在视图中执行SP的某种解决方法,它也无法正常工作。 –

回答

2

我终于找到了我的问题的答案。
我创建了一个存储过程和使用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

你不能用视图做到这一点,对不起。您不能将参数传递给视图,也不能在视图中使用动态SQL。你也不能在一个函数中执行动态SQL,所以它不会在那里工作。您需要调用存储过程来执行此操作。

+0

感谢您的回复。我现在创建了SP,我需要的是在我看来使用SP。 – Saba

+0

您不能从视图调用存储过程。我以前问过,但我会再问一次 - 为什么这需要成为一个观点? –

+0

我很抱歉没有看到您的问题!好。,。在VSTO项目上工作我需要在我的Excel表格中显示一些数据,这些数据只接受表格或视图。我也知道这是不可能的,但认为有人可能有不同的方法 – Saba