1. 直接返回表
CREATE FUNCTION [dbo].[fn_test](@input1 varchar(10), @input2 varchar(10))
RETURNS TABLE
AS
RETURN
(
SELECT @input1 as col1,
@input2 as clo2
)
select * from [dbo].[fn_test](1,2)
Result
2. Multi-statement table-valued functions (MSTVF)
CREATE FUNCTION [dbo].[fn_test](@input1 varchar(10), @input2 varchar(10))
RETURNS @test_t TABLE (col1 varchar(10),col2 varchar(10))
AS
BEGIN
INSERT INTO @test_t VALUES(@input1,@input2)
INSERT INTO @test_t VALUES(1,2)
INSERT INTO @test_t VALUES('A','B')
RETURN
END
Result
ERROR
當把第一種函數改成第二種的時候,會報錯如下:
Cannot perform alter on ‘dbo.fn_test’ because it is an incompatible object type.
解決辦法就是: 刪除掉原先的函數重新創建。
PS: 函數中不可使用臨時表,這時候就可以用方法2.