Articles of plpgsql

La función PostgreSQL devuelve múltiples conjuntos de resultados

¿Es posible devolver varios conjuntos de resultados de una función de Postgres, como en MSSQL: CREATE PROCEDURE test AS SELECT * FROM first_table SELECT * FROM second_table

¿Puedo hacer que una función plpgsql devuelva un número entero sin usar una variable?

Algo como esto: CREATE OR REPLACE FUNCTION get(param_id integer) RETURNS integer AS $BODY$ BEGIN SELECT col1 FROM TABLE WHERE id = param_id; END; $BODY$ LANGUAGE plpgsql; Me gustaría evitar un DECLARE solo por esto.

¿FUNCIÓN DE CAÍDA sin conocer el número / tipo de parámetros?

‘CREATE OR REPLACE FUNCTION somefunction’ todas mis funciones en un archivo de texto con ‘CREATE OR REPLACE FUNCTION somefunction’ . Entonces, si agrego o cambio alguna función, simplemente le envío el archivo a psql. Ahora bien, si agrego o elimino parámetros a una función existente, se crea una sobrecarga con el mismo nombre y para […]

Unnest array por un nivel

Quiero tomar una matriz de n dimensiones y devolver un conjunto que contiene filas de matrices de n-1 dimensiones. Por ejemplo, tome la matriz ARRAY[[1,2,3], [4,5,6], [7,8,9]] y devuelva un conjunto {1,2,3}, {4,5,6}, {7,8,9} . Usando unnest devuelve el conjunto 1,2,3,4,5,6,7,8,9 . Intenté capturar la función Unnest de PostgreSQL 8.4, que parece que haría lo […]

¿Cómo realizo grandes actualizaciones sin locking en PostgreSQL?

Quiero hacer una gran actualización en una tabla en PostgreSQL, pero no necesito mantener la integridad transaccional en toda la operación, porque sé que la columna que estoy modificando no se va a escribir o leer durante la actualización. Quiero saber si hay una manera fácil en la consola psql de hacer que estos tipos […]

¿Hay alguna forma de desactivar la sobrecarga de funciones en Postgres?

Mis usuarios y yo no utilizamos la función de sobrecarga en PL / pgSQL. Siempre tenemos una función por tupla (esquema, nombre). Como tal, nos gustaría soltar una función solo por nombre, cambiar su firma sin tener que soltarla primero, etc. Considere por ejemplo, la siguiente función: CREATE OR REPLACE FUNCTION myfunc(day_number SMALLINT) RETURNS TABLE(a […]

Genere dinámicamente columnas para tablas cruzadas en PostgreSQL

Intento crear consultas de crosstab en PostgreSQL de modo que genere automáticamente las columnas de la crosstab lugar de codificarlas en forma rígida. He escrito una función que genera dinámicamente la lista de columnas que necesito para mi consulta de crosstab . La idea es sustituir el resultado de esta función en la consulta de […]

Ejecute una consulta dinámica de tabla cruzada

Implementé esta función en mi base de datos de Postgres: http://www.cureffi.org/2013/03/19/automatically-creating-pivot-table-column-names-in-postgresql/ Aquí está la función: 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 […]

Lazo sobre la dimensión de la matriz en plpgsql

En plpgsql, quiero obtener los contenidos de la matriz uno por uno desde una matriz de dos dimensiones. DECLARE m varchar[]; arr varchar[][] := array[[‘key1′,’val1’],[‘key2′,’val2’]]; BEGIN for m in select arr LOOP raise NOTICE ‘%’,m; END LOOP; END; Pero el código anterior regresa: {{key1,val1},{key2,val2}} en una linea Quiero ser capaz de repetir y llamar a […]

PostgreSQL: ERROR: 42601: se requiere una lista de definición de columna para las funciones que devuelven “registro”

(Descargo de responsabilidad: Novato de PostgreSQL). De acuerdo, por lo que puedo ver, mi función se asemeja bastante a las muestras que he visto. ¿Puede alguien darme una pista sobre cómo hago para que funcione? create or replace function get_user_by_username( username varchar(250), online boolean ) returns setof record as $$ declare result record; begin if […]