首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

函数返回多个值?解决办法

2012-01-07 
函数返回多个值?select*fromtest,lastDateAddr( 2007-04-01 , 2007-05-01 ,test.name)lastStr这是错误的,

函数返回多个值?
select   *from   test,lastDateAddr( '2007-04-01 ', '2007-05-01 ',test.name)   lastStr

这是错误的,正确的该如何写?

[解决办法]
lastDateAddr 是什么函数?
标量?表值?
[解决办法]
select *,dbo.lastDateAddr( '2007-04-01 ', '2007-05-01 ',test.name) lastStr from test
[解决办法]
他说的是函数,返回多个值,不是少了dbo.的问题吧
[解决办法]
只能说你的函数写错了

没办法像你想象的那样调用

[解决办法]
你可以写个函数:

create function lastDateAddr1(@date1 datetime,@date2 datetime)
returns table
as
return(
selectmmst501.cust_no,max(mmst501.deliv_date) deliv_date,mmst502.mtr_no,mmst012.deliv_addr
frommmst501,mmst502,mmst012
wheremmst502.mtr_no in (select name from test)
andmmst501.deliv_no=mmst502.deliv_no
andmmst501.deliv_date between @date1 and @date2
andmmst502.line_no=mmst012.line_no
andmmst501.deliv_date=mmst012.deliv_date
andmmst502.mtr_no=mmst012.mtr_no
group by mmst501.cust_no,mmst502.mtr_no,mmst012.deliv_addr
)

go

然后这么调用
select * from lastDateAddr1( '2007-04-01 ', '2007-05-01 ') as t

[解决办法]
lastDateAddr(@date1 datetime,@date2 datetime,test1.a)

这里参数什么能是test1.a,一个字段呢?
[解决办法]
create function dddd()
returns @t table(id int)
as
begin
insert @t select 1 union select 2
return
end
go
select * from dddd()
drop function dddd

热点排行