如何在函数中使用用户定义的表类型返回?

时间:2016-06-16 04:00:37

标签: sql sql-server function sql-server-2005 sql-server-2012

create type mt as table (a int, b int)

以下功能有效:

create function fn2()
returns @mt table (a int, b int)
as 
begin 
insert into @mt 
Select 1, 2 
return
end 

以下无效:

create function fn2()
returns @mt table mt
as 
begin 
insert into @mt 
Select 1, 2 
return
end 

关于如何输入' mt'可以用于返回类型?

2 个答案:

答案 0 :(得分:0)

来自function.UDTS的cant return UDT可用作存储过程的只读参数。

create function fn2()
returns @mt table (a int, b int)
as 
begin 
insert into @mt 
Select 1, 2 
return
end 

这是有效的,因为在这里你要返回表变量,第二个原因不起作用,因为你试图返回不可能的表类型。

当您能够完成相同的任务时,我不需要使用表格类型。

您正在以错误的方式使用表类型,使用它的正确方法如下所示:

create type testtype as table
(
id int,
name varchar(100)
);
---stored proc which takes table as param

create proc tvp
@p testtype readonly
as
begin

set nocount on

select * from test1 t
join
@p p1
on p1.id=t.id

end

---now the way to call stored proc

---declare table variable as type of our table type and insert values

declare @p as testtype

insert @p
values
(1,'sateesh')

-----now call stored proc

exec dbo.tvp @p

答案 1 :(得分:0)

:)

create function fn2()
returns table
as 
return (Select 1 a, 2 b)