2012-02-28 58 views
9

在Oracle/PLSQL中,最大函數返回表達式列表中的最大值。爲最大的函數的語法如何編寫PL/SQL函數的參數與最大函數相似

greatest(expr1, expr2, ... expr_n)). 

我怎麼能寫我的無限制參數功能如下:

myfunction(param1 , param2,...param_n) 
+0

+ 1我希望這將被添加到PL/SQL :) – 2012-02-28 06:35:36

回答

8

你可以使用一個表類型作爲參數,模擬變參。

create or replace type VARGS as table of varchar2(32767); 

然後,您可以使用此類型作爲函數的最後一個參數:

CREATE OR REPLACE Function FNC_COUNT_WITH_NAMES 
    (P_NAMES IN VARGS) 
    RETURN number 
IS 
RT_COUNT NUMBER; 
BEGIN 
    select count(*) INTO rt_count from employees where name IN 
    ( 
     select * from TABLE(p_names)) 
    ); 
    return rt_count; 
END; 

客戶端代碼將與調用它:

exec FNC_COUNT_WITH_NAMES (vargs('Brian','Mike','John','David', 'Bob')); 

select FNC_COUNT_WITH_NAMES (vargs('Brian','Mike','John','David', 'Bob')) from dual; 
+3

由於您在sql中使用的是字符串,因此可以將該字符串限制爲4000個字符 – turbanoff 2012-02-28 04:57:47