首页 文章

使用参数创建SQL视图

提问于
浏览
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')

它报告错误,例如“从字符串转换日期和/或时间时转换失败 . ”......我怎么能调用此函数

3 回答

  • 2

    MS Access中允许使用参数化视图,但没有严格的数据库服务器允许您构建需要必需参数的视图 .

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

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

  • 2

    您无法在SQL服务器中创建至少使用表函数的参数化视图 .

    有关详细信息,请参阅Create parameterized VIEW in SQL Server 2008 .

    希望它会给你一个想法 .

  • 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
    

相关问题