我正在尝试编写一个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