我正在嘗試編寫一個SQL函數,但是在聲明我需要在WHERE子句中使用的變量時遇到了問題。SQL查詢幫助 - 函數內變量的聲明
下面的代碼:
CREATE FUNCTION fn_getEmployeePolicies(@employeeid smallint)
RETURNS TABLE
AS
DECLARE @empLoc varchar
DECLARE @empBusA varchar
DECLARE @empType varchar
@empLoc = SELECT Location FROM fn_getEmployeeDetails(@employeeid)
@empBusA = SELECT BusinessArea FROM fn_getEmployeeDetails(@employeeid)
@empType = SELECT Type FROM fn_getEmployeeDetails(@employeeid)
RETURN select PolicyId, PolicyGroupBusinessArea.BusinessArea, policysignoff.PolicyGroupLocation.Location, policysignoff.PolicyGroupEmployeeType.EmployeeType
from policysignoff.PolicyGroupPolicy
LEFT JOIN policysignoff.PolicyGroupBusinessArea on policysignoff.PolicyGroupBusinessArea.PolicyGroupId=policysignoff.PolicyGroupPolicy.PolicyGroupId
LEFT JOIN policysignoff.PolicyGroupLocation on policysignoff.PolicyGroupLocation.PolicyGroupId=policysignoff.PolicyGroupPolicy.PolicyGroupId
LEFT JOIN policysignoff.PolicyGroupEmployeeType on policysignoff.PolicyGroupEmployeeType.PolicyGroupId=policysignoff.PolicyGroupPolicy.PolicyGroupId
where BusinessArea = @empBusA
AND EmployeeType = @empType
AND Location = @empLoc
GO
我試圖建立的邏輯是:
「給予僱員,返回所有‘適用’政策」 的「適用」的政策是一個地方Business Area,Location和EmployeeType與用戶的相匹配。
我想用另一個函數(fn_getEmployeeDetails)來爲給定用戶返回BusArea,Loc & EmpType。 然後用這個結果(作爲變量存儲),我可以運行我的select語句來返回策略。
我遇到的問題是試圖讓函數中正確聲明的變量。
任何幫助或提示,將不勝感激。
在此先感謝!
感謝艾倫。 括號對選擇語句進行排序。 不幸的是,即使添加了長度,變量的聲明仍然不起作用。 我得到的錯誤是: 「不正確的語法附近申報。期待開始或返回」 – user2190629 2014-09-30 09:09:57
我已經修改我的答案 – 2014-09-30 11:03:41