• Categorias
  • Recente
  • Tags
  • Popular
Collapse

Erro ao Atribuir SQL concatenado a uma tabela

Agendado Fixado Trancado Movido Funções
3 Posts 2 Posters 179 Visualizações
    • Mais Antigo para Mais Recente
    • Mais Recente para Mais Antigo
    • Mais Votados
Responder
  • Responder como tópico
Entre para responder
Este tópico foi deletado. Apenas usuários com privilégios de moderação de tópico podem vê-lo.
  • I Offline
    I Offline
    ian_pinheiro
    wrote on última edição por ian_pinheiro
    #1

    Boa tarde, estou tentando atribuir o seguinte SQL a uma tabela pela função "Abrir conexão dinâmica":
    SELECT
    'INSERT INTO rbl_alteracao_compras(data_alteracao,idcompras,cod_produto,qtde,unidade,data_antes,data_depois,diferenca)
    VALUES '
    ||string_agg( distinct
    '(CURRENT_DATE,'||cmp_comprasitens.idcompra||','''||bas_insumo.codigo||''','||coalesce(cast(cmp_comprasitens.qtdeestoque as integer),0.0)||','''||coalesce(bas_insumo.unidestoque,'UN')||''','''||cmp_comprasitens.entrega||''','''||'2022-10-20'||''','||('2022-10-20' - cmp_comprasitens.entrega)||')',',
    ')||';' as insert_compras
    FROM
    ped_itens
    INNER JOIN ped_pedido ON ped_itens.idpedido = ped_pedido.idpedido
    INNER JOIN bas_funcionario ON ped_pedido.idfuncionario = bas_funcionario.idfuncionario
    LEFT JOIN bas_empresa ON ped_pedido.idcliente = bas_empresa.idempresa
    LEFT JOIN bas_insumo ON ped_itens.idinsumo = bas_insumo.idinsumo
    LEFT JOIN cmp_comprasitens ON ped_itens.idinsumo = cmp_comprasitens.idproduto
    LEFT JOIN est_saldo ON ped_itens.idinsumo = est_saldo.idinsumo AND est_saldo.idlocalestoque = 1
    LEFT JOIN flw_registro On ped_itens.idpedido = flw_registro.idpedido
    WHERE
    ped_itens.idstatus IN (0, 1, 2, 3, 7)
    AND flw_registro.idstatus = 1
    AND flw_registro.idnivel2 = 144
    AND cmp_comprasitens.iditem IN (350093)

    Porém, ao usar essa função, me aparece o seguinte erro:
    d4c017a9-c279-4182-9a38-75443d8685da-image.png
    Pelo que estava testando, o problema é gerado quando faço strings dentro do campo, ou seja, monto a estrutura do insert entre as duas primeiras aspas simples (parte que está em negrito e itálico).
    Também tentei usar outras funções, como a abrir consulta dinamica navegavel, avançada, etc e continua dando o mesmo erro.
    Podem me ajudar por favor?

    dngadelhaD 1 Resposta Última resposta
    0
  • dngadelhaD Offline
    dngadelhaD Offline
    dngadelha
    replied to ian_pinheiro on última edição por
    #2

    Boa tarde, @ian_pinheiro!

    Por motivos de segurança e integridade, as funções de abrir consulta fazem verificação do SQL que está sendo passado e permitem somente a execução de comandos SELECT.

    Por algum motivo, a função achou que estava sendo executado o comando de INSERT que você está montando como um campo na sua query. Isso é um comportamento atípico e irei reportá-lo ao setor.

    Entretanto, o ideal nessa situação, seria que você executasse o comando de inserção no fluxo passando os parâmetros ao invés de montar ele no banco de dados. Assim você chamaria a função de abrir consulta somente para pegar os valores desejados e em seguida utilizasse a função Executar Comandos SQL passando seu comando de inserção e a lista de parâmetros (valores obtidos do banco):

    INSERT INTO rbl_alteracao_compras (data_alteracao, idcompras, cod_produto, qtde, unidade, data_antes, data_depois, diferenca) VALUES (?, ?, ?, ?, ?, ?, ?, ?)
    

    50ccc314-c60c-42a6-b95c-c1ff62ab1916-image.png

    Atenciosamente,

    1 Resposta Última resposta
    2
  • I Offline
    I Offline
    ian_pinheiro
    wrote on última edição por
    #3

    Obrigado, ajudou!

    1 Resposta Última resposta
    1

  • Login

  • Não tem uma conta? Cadastrar

  • Login or register to search.
  • Primeiro post
    Último post
0
  • Categorias
  • Recente
  • Tags
  • Popular
  • Login

  • Não tem uma conta? Cadastrar

  • Login or register to search.