如何把表值函数的返回值赋值一个变量

highscore2 2013-12-02 03:05:14
函数返回一个表
create function [dbo].[f_splitToTable]()
returns @t table(col varchar(250))
as
begin
...
end

如何在sp中调用这个函数f_splitToTable并把返回的值赋给一个变量,因为要多次调用这个函数,所以需要把它存放到一个变量中,但我用以下方法试了,不行.
declare @t table(col varchar(250))
select @t = [dbo].[f_splitToTable]()
运行时提示:必须声明标量变量 "@t"。
...全文
322 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
highscore2 2014-01-09
  • 打赏
  • 举报
回复
看来没有直接赋值的方法.
LongRui888 2013-12-02
  • 打赏
  • 举报
回复
引用 楼主 highscore2 的回复:
函数返回一个表 create function [dbo].[f_splitToTable]() returns @t table(col varchar(250)) as begin ... end 如何在sp中调用这个函数f_splitToTable并把返回的值赋给一个变量,因为要多次调用这个函数,所以需要把它存放到一个变量中,但我用以下方法试了,不行. declare @t table(col varchar(250)) select @t = [dbo].[f_splitToTable]() 运行时提示:必须声明标量变量 "@t"。
楼主上面已经定义了一个表变量,那么只需要这样就好了: declare @t table(col varchar(250)) insert into @t select * from [dbo].[f_splitToTable]()
發糞塗牆 2013-12-02
  • 打赏
  • 举报
回复
select * into #t from dbo.f_splitToTable 要不然你就每次select * from dbo.f_splitToTable来获取值,但是由于函数范围的结果集通常对性能都有影响,所以一般建议先生成一个临时表并创建适当的索引,后面用临时表来代替
highscore2 2013-12-02
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
create table #tb(col varchar(250)) insert into #tb(col) select * from dbo.f_splitToTable
这个方法我知道,明显是多创建了一个表,然后往表插入值,理论上应该可以直接引用原来函数返回的表,不用多建一个,但我不知道如何赋值.
發糞塗牆 2013-12-02
  • 打赏
  • 举报
回复
他的用法,表变量也可以的
引用 2 楼 u010192842 的回复:
临时表 要用 “#” #t
Yole 2013-12-02
  • 打赏
  • 举报
回复
临时表 要用 “#” #t
發糞塗牆 2013-12-02
  • 打赏
  • 举报
回复
create table #tb(col varchar(250)) insert into #tb(col) select * from dbo.f_splitToTable

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧