martes, 16 de julio de 2024

Get DocumentNo By Table ID and Record ID

 
-- drop function fnt_getdocumentbyid(table_id numeric(10,0), record_id numeric(10,0));

-- select * from adempiere.fnt_getdocumentbyid(321, 1000000);

CREATE OR REPLACE FUNCTION fnt_getdocumentbyid(table_id numeric(10,0), record_id numeric(10,0))
RETURNS varchar AS $$
DECLARE
    table_name TEXT;
    select_query TEXT;
    result RECORD;
        v_documentno varchar;
BEGIN
    -- Obtiene el nombre de la tabla a partir de ad_table_id
    SELECT t.TableName
    INTO table_name
    FROM AD_Table t
    WHERE t.AD_Table_ID = table_id;

    -- Construye la consulta SELECT
    select_query := 'SELECT * FROM ' || table_name ||
        ' WHERE ' || table_name || '_ID = ' || record_id || ';';

    -- Ejecuta la consulta y muestra los resultados
    FOR result IN EXECUTE select_query LOOP
        -- Imprime los valores de cada fila
        -- RAISE NOTICE '%', result.DocumentNo; -- Reemplaza los nombres de columna
                v_documentno = result.DocumentNo;
    END LOOP;

    return v_documentno;
END;
$$ LANGUAGE plpgsql;

No hay comentarios:

Publicar un comentario