Articles of plpgsql

Esegui una query incrociata dynamic

Ho implementato questa funzione nel mio database Postgres: http://www.cureffi.org/2013/03/19/automatically-creating-pivot-table-column-names-in-postgresql/ Ecco la funzione: create or replace function xtab (tablename varchar, rowc varchar, colc varchar, cellc varchar, celldatatype varchar) returns varchar language plpgsql as $$ declare dynsql1 varchar; dynsql2 varchar; columnlist varchar; begin — 1. retrieve list of column names. dynsql1 = ‘select string_agg(distinct ‘||colc||’||” ‘||celldatatype||”’,”,” order […]

PL / pgSQL verifica se esiste una riga

Sto scrivendo una funzione in PL / pgSQL e sto cercando il modo più semplice per verificare se esiste una riga. In questo momento sto selezionando un integer in un boolean , che in realtà non funziona. Non ho ancora abbastanza esperienza con PL / pgSQL per conoscere il modo migliore per farlo. Ecco parte […]

Istruzione IF PostgreSQL

Come posso fare una query di questo tipo su Postgres? IF (select count(*) from orders) > 0 THEN DELETE from orders ELSE INSERT INTO orders values (1,2,3);

Ripeti il ​​ciclo sulla dimensione dell’array in plpgsql

In plpgsql, voglio ottenere i contenuti dell’array uno per uno da una matrice a due dimensioni. DECLARE m varchar[]; arr varchar[][] := array[[‘key1′,’val1’],[‘key2′,’val2’]]; BEGIN for m in select arr LOOP raise NOTICE ‘%’,m; END LOOP; END; Ma il codice sopra riportato restituisce: {{key1,val1},{key2,val2}} in una riga. Voglio essere in grado di eseguire il loop e […]

Restituisce più campi come record in PostgreSQL con PL / pgSQL

Sto scrivendo un SP, usando PL / pgSQL. Voglio restituire un record, composto da campi di diversi tavoli diversi. Potrebbe assomigliare a questo: CREATE OR REPLACE FUNCTION get_object_fields(name text) RETURNS RECORD AS $$ BEGIN — fetch fields f1, f2 and f3 from table t1 — fetch fields f4, f5 from table t2 — fetch fields […]

Chiama una funzione set-return con un argomento array più volte

Questa è una variante della funzione plpgsql che restituisce più colonne viene chiamata più volte . Tuttavia, speravo di trovare una soluzione al mio particolare insieme di circostanze. Ho una funzione che elabora un array di righe con un determinato parametro e restituisce un insieme di righe + una nuova colonna. CREATE OR REPLACE foo(data […]

GROUP BY e aggregano valori numerici sequenziali

Utilizzo di PostgreSQL 9.0. Diciamo che ho una tabella contenente i campi: company , profession e year . Voglio restituire un risultato che contiene aziende e professioni uniche, ma gli aggregati (in un array vanno bene) anni basati su una sequenza numerica: Tabella di esempio: +—————————–+ | company | profession | year | +———+————+——+ | […]

PostgreSQL: ERRORE: 42601: è richiesta una lista di definizione delle colonne per le funzioni che restituiscono “record”

(Disclaimer: newbie PostgreSQL.) OK, per quanto posso dire, la mia funzione ricorda correttamente i campioni che ho visto. Qualcuno può indovinarmi su come posso farlo funzionare? create or replace function get_user_by_username( username varchar(250), online boolean ) returns setof record as $$ declare result record; begin if online then update users set last_activity = current_timestamp where […]

Come restituire il risultato di un SELECT all’interno di una funzione in PostgreSQL?

Ho questa funzione in PostgreSQL, ma non so come restituire il risultato della query: CREATE OR REPLACE FUNCTION wordFrequency(maxTokens INTEGER) RETURNS SETOF RECORD AS $$ BEGIN SELECT text, count(*), 100 / maxTokens * count(*) FROM ( SELECT text FROM token WHERE chartype = ‘ALPHABETIC’ LIMIT maxTokens ) as tokens GROUP BY text ORDER BY count […]

PostgreSQL ha parametrizzato Order By / Limit nella funzione table

Ho una funzione sql che fa una semplice istruzione di selezione sql: CREATE OR REPLACE FUNCTION getStuff(param character varying) RETURNS SETOF stuff AS $BODY$ select * from stuff where col = $1 $BODY$ LANGUAGE sql; Per ora sto invocando questa funzione in questo modo: select * from getStuff(‘hello’); Quali sono le mie opzioni se devo […]