2016-02-02 64 views
0

我有兩種形式的postgres中的相同函數(見下文),它們都返回相同類型的「表」結果集。它們的定義方式不是DRY(不要重複自己),有沒有辦法只聲明一次結果集?如何在postgres中的函數之外聲明函數結果類型

CREATE OR REPLACE FUNCTION validation_report(_accession text) 
    RETURNS TABLE (
     accession VARCHAR, 
     peptide VARCHAR, 
     modified_sequence VARCHAR, 
     var_mod text, 
     spectrum_title VARCHAR, 
     confidence real, 
     precursor_mz_error real, 
     sample_name text, 
     transcript text, 
     gene_symbol VARCHAR, 
     prot_seq text 
) AS 
$func$ 
BEGIN 

    RETURN query select * from validation_report(array[_accession]); 
END 
$func$ LANGUAGE plpgsql; 


CREATE OR REPLACE FUNCTION validation_report(_accession text[]) 
    RETURNS TABLE (
     accession VARCHAR, 
     peptide VARCHAR, 
     modified_sequence VARCHAR, 
     var_mod text, 
     spectrum_title VARCHAR, 
     confidence real, 
     precursor_mz_error real, 
     sample_name text, 
     transcript text, 
     gene_symbol VARCHAR, 
     prot_seq text 
) AS 
$func$ 
BEGIN 

    RETURN QUERY ..the query.. 

END 
$func$ LANGUAGE plpgsql; 

回答