iT邦幫忙

2

[已解決]如何從FunctionA傳table變數至FunctionB,並從FunctionB回傳table變數至FunctionA

create一個User Defined Table type,
然後在functionA中做insert再傳給functionB
functionB接的時候寫成@tempTableA tp_name READONLY

如下為原本的問題內容

//-------------------------------------------------

如標題,我想要實作以下功能,目前先寫出一個簡單的示意範例,
但在撰寫的過程中遇到註解標示的問題,請問要怎麼調整呢?

functionA依照傳入的條件找到結果,並將結果傳給functionB
functionB依照傳入的table變數重新賦予欄位名稱,並將結果傳給functionA

create function functionA(
	@Type nvarchar(max) 
	, @isArray bit = 0
)
returns @tempTable table (
    FieldId nvarchar(4000)
    , FieldName nvarchar(4000)
    , FieldType nvarchar(4000)
    , IsArray bit)
as
begin
    declare	@tempTableA table
	(
        DeclaringType nvarchar(4000)
        , FieldName nvarchar(4000)
        , FieldValue nvarchar(4000)
	)   
    
	insert @tempTableA 
	select 
		*
	from 
		TableA
	where 
        @isArray = 1 and @Type='TypeA'
	
    insert @tempTable
	select * from functionB(@tempTableA)

    return 

end
go
create function functionB(
    --這邊要怎麼接functionA傳入的table變數?
	@tempTableA table
)
returns @tempTableB table (
    FieldId nvarchar(4000)
    , FieldName nvarchar(4000)
    , FieldType nvarchar(4000)
    , IsArray bit)
as
begin
	insert @tempTableB
	select 
		FieldId [Id]
        , FieldName [Name]
        , FieldType [Type]
        , IsArray Array
	from 
		@tempTableA
	
    return 

end
go

尚未有邦友回答

立即登入回答