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

テーブル関数を使用する代わりに、少なくとも SQL サーバーでパラメーター化されたビューを作成することはできません。

詳細については、「 SQL Server 2008 でパラメーター化された VIEW を作成する」を参照してください。

それがあなたにアイデアを与えることを願っています。

于 2012-04-16T04:55:42.407 に答える
2

パラメータ化されたビューは MS Access で許可されていますが、必須パラメータを必要とするビューを作成できる深刻な db サーバーはありません。

あなたの例は、要件に合わせて選択する必要があるストアドプロシージャを説明しています。

要件を満たす別の方法は、 @Date パラメータを別のテーブルに保持することです。ビューがそれを参照でき、基準が満たされた場合に行が返される場合

于 2012-04-16T04:50:54.810 に答える