Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.06 KB | None | 0 0
  1. ALTER FUNCTION [dbo].[fn_retorna_dados_form_dinamico](@p_id_formulario INT, @p_id_registro_formulario INT)
  2.     RETURNS VARCHAR(MAX)
  3. AS
  4.     BEGIN
  5.     DECLARE @v_id_formulario int = @p_id_formulario;
  6.     DECLARE @v_id_registro_formulario int = @p_id_registro_formulario;
  7.     DECLARE @v_retorno NVARCHAR(MAX) = NULL;
  8.     DECLARE @v_consulta NVARCHAR(MAX);
  9.     DECLARE @ParmDefinition nvarchar(500);
  10.  
  11.     BEGIN
  12.         WITH consulta as (
  13.                           SELECT tb025.ID_FORMULARIO_DINAMICO as id
  14.                                 ,tb025.de_descricao_componente as descricao
  15.                                 ,tb025.de_coluna_nome as coluna
  16.                                 ,tb022.DE_NOME_TABELA as tabela
  17.                           FROM tb025_campo_formulario_dinamico as tb025
  18.                             inner join TB022_FORMULARIO_DINAMICO as tb022
  19.                               on tb022.ID_FORMULARIO_DINAMICO = tb025.ID_FORMULARIO_DINAMICO
  20.                             WHERE tb025.id_formulario_dinamico = @v_id_formulario
  21.                             AND tb025.DE_COLUNA_NOME IS NOT NULL
  22.         )
  23.        
  24.         select DISTINCT
  25.                 @v_consulta = REPLACE(('SELECT ' + (select 'COALESCE(''' + cd.descricao + ' : ''+ ['+ cd.coluna + '] + '', '','''') + '
  26.                                                       from consulta as cd
  27.                                                       where cd.id = cf.id
  28.                                                       order by cd.descricao
  29.                                                       FOR XML PATH('')
  30.                                                     )  + ' FROM '+ cf.tabela +' WHERE id = convert(VARCHAR, @v_id_registro_formulario) ;'
  31.                                       ),'+  FROM',' FROM'
  32.                                      )
  33.         from consulta as cf;
  34.        
  35.         SET @ParmDefinition = N'@v_id_registro_formulario int';
  36.        
  37.         EXECUTE sp_executesql @v_consulta, @ParmDefinition, @v_id_registro_formulario, @v_retorno OUTPUT;
  38.        
  39.         RETURN @v_retorno
  40.        
  41.     END
  42. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement