我创建了具有动态列数的数据透视表,但要实现这一点,我需要创建一个字符串Query并使用Exec('MyStringQuery')运行它,这是我获得我想要的结果的唯一方法。
现在我想使用我的Pivot表创建一个View。因为在View中我无法运行Exec(myQry)
我想创建一个函数并在那里运行我的查询,然后在我的View中使用它,但是我无法创建一个表变量来将结果放在那里,因为我的列数我每次运行查询时都会有所不同。
我怎样才能做到这一点?
create View myView
as
select * from exec(MySP)
当我尝试运行它时,它会给我一个错误。
非常感谢您的意见。
答案 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,因此它无法在那里工作。你害怕,你需要调用一个存储过程才能做到这一点。