2015-11-19 25 views
6

In PostgreSQL 9.3.4 nota stampa si legge:Cosa significano le dichiarazioni VARIADIC in postgreSQL?

Ensure that the planner sees equivalent VARIADIC and non-VARIADIC function calls as equivalent (Tom Lane) 

ho cercato il manuale di PostgreSQL e non riusciva a trovare una definizione di quello che è.

Ho scoperto che è stato realizzato per il modo dell'argomento della funzione (IN, OUT, VARIADIC) ma non ho capito cosa significa? Quando dovrei usarlo? e cosa significa in termini di prestazioni se la funzione ha proprietà VARIADIC?

risposta

4

Le funzioni variabili sono quelle con un numero indefinito di argomenti, sono presenti in molti linguaggi di programmazione e di query.

Nel caso di PostgreSQL, è possibile trovare un esempio a http://www.postgresql.org/docs/9.1/static/xfunc-sql.html (35.4.5 Funzioni SQL con un numero variabile di argomenti.):

In effetti, tutti gli argomenti effettivi alla o al di là della posizione variadic sono raccolte in su in un array monodimensionale, come se si avesse scritto

+0

L'array può essere di tipo definito dall'utente? qualche tipo che dichiaro con CREATE TYPE? – Johnathan

+0

Questo non risponde alla mia domanda ... dire che ho tipo A: nome testo, numero intero stipendio ... Voglio che l'array sia di tipo A. significa che ogni cella di A è una tupla (testo, intero). .... [(testo, numero intero), (testo, numero intero), ....] ... può essere eseguito con il parametro VARADIC? – Johnathan

+0

@Johnathan Un parametro variadic deve essere dichiarato di tipo 'array' che implica che se è possibile avere elementi tipizzati definiti dall'utente in una matrice, si può anche avere un parametro variadico di elementi di quel tipo. La differenza tra un parametro variadic e un parametro array semplice è che nel primo caso è possibile passare gli elementi dell'array come se i suoi elementi fossero parametri aggiuntivi nell'elenco degli argomenti. Cioè: valori separati da virgola. –

3

quando non si è sicuri circa il numero di parametri, allora usiamo variadic.

È possibile fare riferimento a VARIADIC FUNCTIONS IN POSTGRESQL per i dettagli.

Vedere il wiki merito Variadic functions:

Nella programmazione di computer, una funzione variadic è una funzione di arità indefinita, cioè quella che accetta un numero variabile di argomenti. Il supporto per le funzioni variad è molto diverso tra i linguaggi di programmazione .

+0

Posso usare VARIADIC con limite? Per esempio, so che saranno 2-5 argomenti interi ... e se è più di 5 allora dovrebbe darmi che la funzione non esiste errore. – Johnathan

+0

@Johnathan: - Non sono sicuro al 100% se ho capito bene, ma sì è possibile controllare il numero di parametri e poi mostrare il messaggio se il conteggio è più di un numero desiderato. –

Problemi correlati