Articles of plpgsql

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 […]

Unnest multiple matrici in parallelo

La mia ultima domanda Passare un array a memorizzato su postgres era un po ‘oscuro. Ora, per chiarire il mio objective: Voglio creare una procedura memorizzata Postgres che accetterà due parametri di input. Uno sarà un elenco di alcuni importi come ad esempio (100, 40.5, 76) e l’altro sarà l’elenco di alcune fatture (’01-2222-05′,’01-3333-04′,’01-4444-08′) . […]

Definisci i nomi di tabelle e colonne come argomenti in una funzione plpgsql?

Deve essere semplice, ma sto facendo i miei primi passi nelle funzioni di Postgres e non riesco a trovare nulla che funzioni … Mi piacerebbe creare una funzione che modifichi una tabella e / o una colonna e non riesco a trovare il modo giusto di specificare le mie tabelle e colonne come argomenti nella […]

Come impostare il valore del campo variabile composito utilizzando SQL dinamico

Dato questo tipo: — Just for testing purposes: CREATE TYPE testType as (name text) Posso ottenere il valore di un campo in modo dinamico con questa funzione: CREATE OR REPLACE FUNCTION get_field(object anyelement, field text) RETURNS text as $BODY$ DECLARE value text; BEGIN EXECUTE ‘SELECT $1.”‘ || field || ‘”‘ USING object INTO value; return […]

Troncamento di tutte le tabelle in un database Postgres

Ho regolarmente bisogno di cancellare tutti i dati dal mio database PostgreSQL prima di una ricostruzione. Come lo farei direttamente in SQL? Al momento sono riuscito a creare una dichiarazione SQL che restituisce tutti i comandi che devo eseguire: SELECT ‘TRUNCATE TABLE ‘ || tablename || ‘;’ FROM pg_tables WHERE tableowner=’MYUSER’; Ma non riesco a […]

Differenza tra linguaggio sql e linguaggio plpgsql nelle funzioni di PostgreSQL

Sono molto nuovo nello sviluppo del database quindi ho qualche dubbio sul mio esempio seguente: Funzione f1 () – lingua sql create or replace function f1(istr varchar) returns text as $$ select ‘hello! ‘::varchar || istr; $$ language sql; Funzione f2 () – linguaggio plpgsql create or replace function f2(istr varchar) returns text as $$ […]

Cosa si intende per ‘$$’ in PL / pgSQL

Essendo completamente nuovo in PL / pgSQL, qual è il significato di doppio simbolo del dollaro in questa funzione : CREATE OR REPLACE FUNCTION check_phone_number(text) RETURNS boolean AS $$ BEGIN IF NOT $1 ~ e’^\\+\\d{3}\\ \\d{3} \\d{3} \\d{3}$’ THEN RAISE EXCEPTION ‘Wrong formated string “%”. Expected format is +999 999’; END IF; RETURN true; END; […]

L’operatore di assegnazione dimenticato “=” e il luogo comune “: =”

La documentazione per PL / pgSQL dice che la dichiarazione e l’assegnazione alle variabili è fatta con := . Ma un semplice, più breve e più moderno (vedi nota in calce) = sembra funzionare come previsto: CREATE OR REPLACE FUNCTION foo() RETURNS int AS $$ DECLARE i int; BEGIN i = 0; WHILE NOT i […]