| 導購 | 订阅 | 在线投稿
分享
 
 
 

在函數間不能傳遞32個以上參數的疑難問題

來源:互聯網  2008-06-03 06:17:41  評論

本文中的示例主要是解決在函數間不能傳遞多個(32個以上)參數的問題,解題的具體思路就是采用記錄類型作爲函數的輸入和返回值,所以我們需要先定義一個視圖,把它作爲一個結構類型,函數的輸入和輸出就用它作爲數據類型,但是在研究過程中存在record類型不能直接作爲函數的參數傳入參數,所以我們需要建立一個函數test_rec3,這個函數的主要功能就是返回一個test_view形式的record結構,這樣在 test_rec2中將test_rec3的結果作爲參數傳入,可以避免在直接傳入record類型變量的時候的錯誤,在test_rec2中,又可以給其他傳入參數的其他屬性賦值,這樣可以多建幾個類似test_rec2的函數,完成對傳入闡述的賦值,最後在test_rec1中賦值給一個record 類型變量,這樣test_rec2的返回值可以作爲其他函數輸入,而且這個輸入的變量相當于一個結構,雖然它是一個變量,但卻包含了多個變量的信息,從而實現了向一個函數中輸入操作系統限制數量的參數(32個) 。

create view test_view (p1,p2) as select cast(null as int),cast(null asint)

create or replace function test_rec1(int,int) returns test_view as

'

declare

view_rec test_view%rowtype ;

view_rec1 test_view%rowtype ;

begin

view_rec.p1 = 2;

view_rec.p2 = 3;

select * into view_rec1 from test_rec2( test_rec3($1),$2);

return view_rec1;

end;'language 'plpgsql';

create or replace function test_rec2(test_view,int) returns test_view as

'

declare

view_return alias for $1;

begin

view_return.p2 = $2;

return view_return;

end;'language 'plpgsql';

create or replace function test_rec3(int) returns test_view as

'

declare

view_return test_view%rowtype;

begin

view_return.p1 = $1;

view_return.p2 =0;

return view_return;

end;'language 'plpgsql';

本文中的示例主要是解決在函數間不能傳遞多個(32個以上)參數的問題,解題的具體思路就是采用記錄類型作爲函數的輸入和返回值,所以我們需要先定義一個視圖,把它作爲一個結構類型,函數的輸入和輸出就用它作爲數據類型,但是在研究過程中存在record類型不能直接作爲函數的參數傳入參數,所以我們需要建立一個函數test_rec3,這個函數的主要功能就是返回一個test_view形式的record結構,這樣在 test_rec2中將test_rec3的結果作爲參數傳入,可以避免在直接傳入record類型變量的時候的錯誤,在test_rec2中,又可以給其他傳入參數的其他屬性賦值,這樣可以多建幾個類似test_rec2的函數,完成對傳入闡述的賦值,最後在test_rec1中賦值給一個record 類型變量,這樣test_rec2的返回值可以作爲其他函數輸入,而且這個輸入的變量相當于一個結構,雖然它是一個變量,但卻包含了多個變量的信息,從而實現了向一個函數中輸入操作系統限制數量的參數(32個) 。 create view test_view (p1,p2) as select cast(null as int),cast(null asint) create or replace function test_rec1(int,int) returns test_view as ' declare view_rec test_view%rowtype ; view_rec1 test_view%rowtype ; begin view_rec.p1 = 2; view_rec.p2 = 3; select * into view_rec1 from test_rec2( test_rec3($1),$2); return view_rec1; end;'language 'plpgsql'; create or replace function test_rec2(test_view,int) returns test_view as ' declare view_return alias for $1; begin view_return.p2 = $2; return view_return; end;'language 'plpgsql'; create or replace function test_rec3(int) returns test_view as ' declare view_return test_view%rowtype; begin view_return.p1 = $1; view_return.p2 =0; return view_return; end;'language 'plpgsql';
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有