谁能帮我看一下下面的函数有什麽问题,看了很长时间也没有结果create function view_nianduchaxun(@user nvarchar(20),@nianfen nvarchar(20))
returns table
as
begin
if (@nianfen='全部')
return(select * from view_nianduxuanze(@user) n left join view_quanbuchaxun v on n.niandu=v.dinggounian where v.tuihuo=0)
else
return(select * from view_nianduxuanze(@user) n left join view_quanbuchaxun v on n.niandu=v.dinggounian where (v.tuihuo=0 and v.dinggouyue=@nianfen))
end
go
returns table
as
begin
if (@nianfen='全部')
return(select * from view_nianduxuanze(@user) n left join view_quanbuchaxun v on n.niandu=v.dinggounian where v.tuihuo=0)
else
return(select * from view_nianduxuanze(@user) n left join view_quanbuchaxun v on n.niandu=v.dinggounian where (v.tuihuo=0 and v.dinggouyue=@nianfen))
end
go
用来干啥的,view_nianduxuanze(@user)是什么东东?
create function view_nianduchaxun(@user nvarchar(20),@nianfen nvarchar(20)=null)
returns table
as
return(select *
from view_nianduxuanze(@user) n left join view_quanbuchaxun v
on n.niandu=v.dinggounian
where (v.tuihuo=0 and v.dinggouyue=isnull(@nianfen,v.dinggouyue)))
go
服务器: 消息 170,级别 15,状态 31,过程 view_nianduchaxun,行 10第 10 行: 'BEGIN' 附近有语法错误。
现在运行sql语句,就报上面的错了。
改为:
RETURNS @SplitStringsTable TABLE
(
QuestionNum int identity(1,1),
TestID bigint,
TotalPoint varchar(3)
)
就是列出字段 试一试
我的表值函数都这样写没有错过
--加上dbo.函数名
create function view_nianduchaxun(@user nvarchar(20),@nianfen nvarchar(20))
returns table
as
begin
if (@nianfen='全部')
return(select * from dbo.view_nianduxuanze(@user) n left join view_quanbuchaxun v on n.niandu=v.dinggounian where v.tuihuo=0)
else
return(select * from dbo.view_nianduxuanze(@user) n left join view_quanbuchaxun v on n.niandu=v.dinggounian where (v.tuihuo=0 and v.dinggouyue=@nianfen))
end
go
如果要查全部就传NULL啊
5#已经提示你了