首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用参数创建SQL-view

使用参数创建SQL-view
EN

Stack Overflow用户
提问于 2012-04-16 12:40:07
回答 3查看 18.4K关注 0票数 2
代码语言:javascript
复制
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查询,我需要尽可能用这个one.....is创建一个视图。

我为此创建了一个函数,如下

代码语言:javascript
复制
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

)

当我像这样调用视图时,视图被创建为successfully....but

代码语言:javascript
复制
 select * from dbo.Attendance('2012-04-11')

它报告类似“转换日期和/或时间从字符串转换失败”的错误。......how我可以调用这个函数吗

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-16 12:50:55

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

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

满足需求的另一种方法是将@Date参数保存在另一个表中,前提是该参数在另一个表中,视图可以引用该参数并在满足条件时返回一行

票数 2
EN

Stack Overflow用户

发布于 2012-04-16 12:55:42

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

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

希望它能给你一个想法。

票数 2
EN

Stack Overflow用户

发布于 2017-08-04 19:07:22

根据以下信息,使用参数查看是可能的。请访问以下链接:

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

代码语言:javascript
复制
CREATE SQL VIEW Customer_Remote_View ;
   AS SELECT * FROM Customers WHERE Customers.Country = ?cCountry
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10168790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档