Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server在进程上构建的视图,在该视图中,我可以将参数更改为基础进程_Sql Server - Fatal编程技术网

Sql server SQL Server在进程上构建的视图,在该视图中,我可以将参数更改为基础进程

Sql server SQL Server在进程上构建的视图,在该视图中,我可以将参数更改为基础进程,sql-server,Sql Server,我有一个proc,它接受一些参数并返回一个数据表。我在这个过程之上构建了一个视图,因为许多第三方报告系统只允许您连接到视图或表。我的问题是,有没有办法调用视图并以某种方式将参数从视图传递到它调用的底层进程?或者这有什么选择 create view MyView_Pizza_Pepsi select * from openquery(link, 'set no count on; exec MyProc "Pizza", "Pepsi" ') 因此,现在我必须使用硬编码参数生成大量硬编码

我有一个proc,它接受一些参数并返回一个数据表。我在这个过程之上构建了一个视图,因为许多第三方报告系统只允许您连接到视图或表。我的问题是,有没有办法调用视图并以某种方式将参数从视图传递到它调用的底层进程?或者这有什么选择

create view MyView_Pizza_Pepsi
    select * from openquery(link, 'set no count on; exec MyProc "Pizza", "Pepsi" ')

因此,现在我必须使用硬编码参数生成大量硬编码视图,以便将其引入报告工具。不理想。

好的,不,不能将参数传递给视图。另一种方法是将所有数据和过滤条件像

create view MyView_Pizza_Pepsi
    select * from openquery(link, 'set no count on; exec MyProc')
    Where col1 = 'Pizza'
    and col2 = 'Pepsi'; 
嗯,你需要相应地改变你的程序。现在,您可以从应用程序中传递这些参数并获得过滤后的数据


我会将openquery调用全部删除,并将其转换为普通的
SELECT
语句。

该进程长期运行,没有要筛选的参数,因此我们希望在运行之前将这些参数添加到该进程。@user441521,那么您根本不需要该视图。相反,您的报表生成器必须直接调用该过程并仅授予对该过程的访问权限。许多第三方报告工具只允许连接到视图/表。这是主要问题。@user441521,在这种情况下,恐怕我看不到任何其他选项。按设计的
视图
不接受参数。