2
declare @Date DateTime
set @Date='2012-04-16'
select s.sid,'Status'=case a.sid when isnull(a.sid,null)   
then 'absent' else 'present' end from
student s left outer join (select * from absent where date=@Date) as a
on s.sid=a.sid

我有一个这样的 sql 查询,我需要用这个创建一个视图.....有可能吗..

我为此创建了一个函数

CREATE FUNCTION dbo.Attendance (@Date DateTime)
RETURNS TABLE
AS
RETURN
(
    select s.sid,'Status'=case a.sid when isnull(a.sid,null)   
    then 'absent' else 'present' end from
    student s left outer join (select * from absent where date=@Date) as a
    on s.sid=a.sid

)

视图创建成功....但是当我调用视图时

 select * from dbo.Attendance('2012-04-11')

它报告错误,例如“从字符串转换日期和/或时间时转换失败。”......我该如何调用这个函数

4

3 回答 3

2

MS Access 中允许参数化视图,但没有严肃的数据库服务器允许您构建需要强制参数的视图。

您的示例描述了一个存储过程,它应该是您要求的选择实现。

满足您要求的另一种方法是将您的 @Date 参数保留在另一个表中,只要它在那里,视图可以引用它,并且如果满足条件将返回一行

于 2012-04-16T04:50:54.810 回答
2

您不能至少在 SQL Server 中创建参数化视图,而是使用表函数。

有关详细信息,请参阅在 SQL Server 2008 中创建参数化视图。

希望它会给你一个想法。

于 2012-04-16T04:55:42.407 回答
1

可以根据以下信息查看带参数的视图。请访问以下链接:

https://msdn.microsoft.com/library/c11kd98s(v=vs.80).aspx

CREATE SQL VIEW Customer_Remote_View ;
   AS SELECT * FROM Customers WHERE Customers.Country = ?cCountry
于 2017-08-04T11:07:22.030 回答