是否可以将参数传递给Microsoft SQL Server中的视图?
我试着用下面的方法create view
,但它不起作用:
create or replace view v_emp(eno number) as select * from emp where emp_id=&eno;
发布于 2009-11-06 21:14:34
如前所述,您不能这样做。
一种可能的解决方案是实现一个存储函数,例如:
CREATE FUNCTION v_emp (@pintEno INT)
RETURNS TABLE
AS
RETURN
SELECT * FROM emp WHERE emp_id=@pintEno;
这使您可以将其用作普通视图,包括:
SELECT * FROM v_emp(10)
发布于 2009-11-06 21:10:06
有两种方法可以实现你想要的。不幸的是,这两种方法都不能使用视图来完成。
您可以创建一个表值用户定义函数,该函数接受所需的参数并返回查询结果
或者,您可以做几乎相同的事情,但创建一个存储过程,而不是用户定义的函数。
例如:
存储过程将如下所示
CREATE PROCEDURE s_emp
(
@enoNumber INT
)
AS
SELECT
*
FROM
emp
WHERE
emp_id=@enoNumber
否则,用户定义的函数将如下所示
CREATE FUNCTION u_emp
(
@enoNumber INT
)
RETURNS TABLE
AS
RETURN
(
SELECT
*
FROM
emp
WHERE
emp_id=@enoNumber
)
发布于 2009-11-06 21:03:02
不,你不能,就像Mladen Prajdic说的那样。将视图看作是表或表的组合上的“静态过滤器”。例如:视图可以组合表Order
和Customer
,因此您可以从Order
获得一个新的“表”,其中包含行以及包含客户名称和客户编号的新列(表的组合)。或者,您可以创建一个仅从Order
表中选择未处理订单的视图(静态筛选器)。
然后,您可以像从任何其他“普通”表中选择一样从视图中进行选择-所有“非静态”过滤都必须在视图之外进行(比如“获取名为Miller的客户的所有订单”或“获取12月24日收到的未处理订单”)。
https://stackoverflow.com/questions/1687279
复制相似问题