2012-04-16 35 views
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 [email protected]) as a 
on s.sid=a.sid 

我有一個SQL查詢這樣的,我需要創建一個視圖這一個.....是有可能..創建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 [email protected]) as a 
    on s.sid=a.sid 

) 

視圖創建成功....但是當我打電話像

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

的觀點,如「轉換失敗時將其轉換報告錯誤「......我怎樣才能調用這個功能

+3

不是真的 - 觀點沒有參數...在視圖中,你可以只做加盟,在查詢視圖中使用的參數在哪裏... – Yahia 2012-04-16 04:43:18

+0

燁我會做...烏拉圭回合響應葉海亞 – shanish 2012-04-16 04:44:38

+1

您希望在運行時指定參數值,創建存儲過程或者 – Naved 2012-04-16 04:45:18

回答

2

參數化視圖允許在MS Access中,但沒有嚴重的數據庫服務器將允許你構建一個需要強制的視圖參數。

你的例子描述了一個存儲過程,它應該是你的需求的選擇實現。

滿足您的需求將是保持你的@date參數在另一個表的另一種方式,提供了它的存在視圖可以指的是,如果條件滿足

+0

感謝帕迪卡羅爾...我不明白如何保持@Date在另一個表,你可以給我查詢示例 – shanish 2012-04-16 04:55:59

+0

create table application_parameters(param_name varchar,param_value varchar);插入到application_parameters(param_name,param_value)值('my_app_date','2012-04-16'); – 2012-04-16 04:58:09

+1

select s.sid,'Status'= case a.sid when isnull(a。sid,null) 作爲 在s上從 學生的左外連接(select * from absent,application_paramaters where param_name ='my_app_date'和date = cast(my_param_value as Date))結束。 sid = a.sid ----未檢查,但你的想法 – 2012-04-16 05:08:24

2

不能創建一個參數化將返回一行在SQL Server中查看atleast而不是使用表函數。

詳情請參考Create parameterized VIEW in SQL Server 2008

希望它會給你一個想法。

+0

感謝Shailesh,請檢查我更新的問題 – shanish 2012-04-16 05:37:05

+0

嘗試採取'2012-04-11'到一個日期時間變量然後使用select * from dbo.Attendance(@myDate)。我希望這個修改後,它應該工作 – Shailesh 2012-04-16 07:04:46

+0

它不工作 – shanish 2012-04-16 09:38:10