Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ALTER FUNCTION [dbo].[fn_retorna_dados_form_dinamico](@p_id_formulario INT, @p_id_registro_formulario INT)
- RETURNS VARCHAR(MAX)
- AS
- BEGIN
- DECLARE @v_id_formulario int = @p_id_formulario;
- DECLARE @v_id_registro_formulario int = @p_id_registro_formulario;
- DECLARE @v_retorno NVARCHAR(MAX) = NULL;
- DECLARE @v_consulta NVARCHAR(MAX);
- DECLARE @ParmDefinition nvarchar(500);
- BEGIN
- WITH consulta as (
- SELECT tb025.ID_FORMULARIO_DINAMICO as id
- ,tb025.de_descricao_componente as descricao
- ,tb025.de_coluna_nome as coluna
- ,tb022.DE_NOME_TABELA as tabela
- FROM tb025_campo_formulario_dinamico as tb025
- inner join TB022_FORMULARIO_DINAMICO as tb022
- on tb022.ID_FORMULARIO_DINAMICO = tb025.ID_FORMULARIO_DINAMICO
- WHERE tb025.id_formulario_dinamico = @v_id_formulario
- AND tb025.DE_COLUNA_NOME IS NOT NULL
- )
- select DISTINCT
- @v_consulta = REPLACE(('SELECT ' + (select 'COALESCE(''' + cd.descricao + ' : ''+ ['+ cd.coluna + '] + '', '','''') + '
- from consulta as cd
- where cd.id = cf.id
- order by cd.descricao
- FOR XML PATH('')
- ) + ' FROM '+ cf.tabela +' WHERE id = convert(VARCHAR, @v_id_registro_formulario) ;'
- ),'+ FROM',' FROM'
- )
- from consulta as cf;
- SET @ParmDefinition = N'@v_id_registro_formulario int';
- EXECUTE sp_executesql @v_consulta, @ParmDefinition, @v_id_registro_formulario, @v_retorno OUTPUT;
- RETURN @v_retorno
- END
- END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement