请教一个SQL自定义函数的问题(在线等待)

chenwei316 chenwei316 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我想写一个函数,就是返回一个Table,其中要用到IF语句,出现问题,总是告诉我BEGIN处出错,和"标量值的函数中的 RETURN 语句必须含有参数"。请问是什么意思,另外我写了两个正确的但是不同内容,一个是返回VarChar(32)的其中用到了If...Else没有问题,另外一个是返回table的也没有问题,但是把它们合并后就不行了,现将3个SQL一并贴出请大家看看!
1.正确使用IF...ELSE的

ALTER function GetAllNextLevelDepID1 (@DepId varchar(32),@iType int)
RETURNS varchar(32)
as
begin
if @iType=0

RETURN
'0'

else
if @iType=1
return '1'
return '2'
end


2.正确使用返回Table的


ALTER function GetAllNextLevelDepID (@DepId varchar(32),@iType int)
RETURNS TABLE
as


RETURN
SELECT DISTINCT Dep.ID
FROM Dep
INNER JOIN Dep d ON (Dep.PathID LIKE d.PathID +'%' AND d.PathID<>Dep.PathID) OR d.ID=Dep.ID
WHERE d.ID=@DepId

3.错误的且同时使用IF...ELSE也是用返回Table

create function GetAllNextLevelDepID2 (@DepId varchar(32),@iType int)
RETURNS TABLE
as
begin
if @iType=0
begin
RETURN
SELECT DISTINCT Dep.ID
FROM Dep
INNER JOIN Dep d ON (Dep.PathID LIKE d.PathID +'%' AND d.PathID<>Dep.PathID) OR d.ID=Dep.ID
WHERE d.ID=@DepId
end
RETURN
SELECT DISTINCT Dep.ID
FROM Dep
INNER JOIN Dep d ON (Dep.PathID LIKE d.PathID +'%' AND d.PathID<>Dep.PathID)
WHERE d.ID=@DepId
end


请大家帮忙看看,在线等待
...全文
评论 7
收藏 已收藏
分享
返回顶部
chenwei316
疑难问题 22,298 成员 121,727 内容