程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 在函數間不能傳遞32個以上參數的疑難問題

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

編輯:關於MYSQL數據庫

本文中的示例主要是解決在函數間不能傳遞多個(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';

以下為引用的內容:

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';

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved