Articles of dynamic sql

consulta dinámica sql en postgres

Estaba intentando utilizar SQL dynamic para ejecutar algunas consultas en postgres. Ejemplo: EXECUTE format(‘SELECT * from result_%s_table’, quote_ident((select id from ids where condition = some_condition))) Tengo que consultar una tabla, que es de la forma result_% s_table en donde, necesito sustituir el nombre de la tabla correcta (una identificación) de otra tabla. Aparece el error […]

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

Usar un cursor con SQL dynamic en un procedimiento almacenado

Tengo una statement SQL dinámica que he creado en un procedimiento almacenado. Necesito iterar sobre los resultados usando un cursor. Me está costando trabajo descifrar la syntax correcta. Esto es lo que estoy haciendo. SELECT @SQLStatement = ‘SELECT userId FROM users’ DECLARE @UserId DECLARE users_cursor CURSOR FOR EXECUTE @SQLStatment –Fails here. Doesn”t like this OPEN […]

Resultados SQL dynamics en la tabla temporal en el procedimiento SQL almacenado

El código es el siguiente: ALTER PROCEDURE dbo.pdpd_DynamicCall @SQLString varchar(4096) = null AS Begin create TABLE #T1 ( column_1 varchar(10) , column_2 varchar(100) ) insert into #T1 execute (‘execute ‘ + @SQLString ) select * from #T1 End El problema es que quiero llamar a diferentes procedimientos que pueden devolver columnas diferentes. Por lo tanto, […]

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

¿Definir nombres de tabla y columna como argumentos en una función plpgsql?

Debe ser simple, pero estoy dando mis primeros pasos en las funciones de Postgres y no puedo encontrar nada que funcione … Me gustaría crear una función que modifique una tabla y / o columna y no puedo encontrar la manera correcta de especificar mis tablas y columnas como argumentos en mi función. Algo como: […]

¿Por qué no puedo usar variables de vinculación en sentencias DDL / SCL en SQL dynamic?

Estoy tratando de ejecutar un comando SQL dentro de SQL dynamic con variables de vinculación: — this procedure is a part of PL/SQL package Test_Pkg PROCEDURE Set_Nls_Calendar(calendar_ IN VARCHAR2) IS BEGIN EXECUTE IMMEDIATE ‘ALTER SESSION SET NLS_CALENDAR = :cal’ USING IN calendar_; END Set_Nls_Calendar; Luego, en el lado del cliente, bash invocar el procedimiento: Test_Pkg.Set_Nls_Calendar(‘Thai […]

Truncar todas las tablas en una base de datos de Postgres

Necesito eliminar regularmente todos los datos de mi base de datos PostgreSQL antes de una reconstrucción. ¿Cómo haría esto directamente en SQL? Por el momento, he logrado encontrar una statement SQL que devuelve todos los comandos que necesito para ejecutar: SELECT ‘TRUNCATE TABLE ‘ || tablename || ‘;’ FROM pg_tables WHERE tableowner=’MYUSER’; Pero no puedo […]

INSERT con el nombre de la tabla dinámica en la función de activación

No estoy seguro de cómo lograr algo como lo siguiente: CREATE OR REPLACE FUNCTION fnJobQueueBEFORE() RETURNS trigger AS $$ DECLARE shadowname varchar := TG_TABLE_NAME || ‘shadow’; BEGIN INSERT INTO shadowname VALUES(OLD.*); RETURN OLD; END; $$ LANGUAGE plpgsql; Es decir, insertar valores en una tabla con un nombre generado dinámicamente. Ejecutando el código anterior produce: ERROR: […]