Skip to content
  • Categorias
  • Recente
  • Tags
  • Popular
Collapse
Brand Logo

  1. Fórum Maker
  2. Categorias
  3. Funções
  4. Erro ao Atribuir SQL concatenado a uma tabela

Erro ao Atribuir SQL concatenado a uma tabela

Agendado Fixado Trancado Movido Funções
3 Posts 2 Posters 237 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
    escreveu em ú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
    • I ian_pinheiro

      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 Offline
      dngadelhaD Offline
      dngadelha
      escreveu em ú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
        escreveu em última edição por
        #3

        Obrigado, ajudou!

        1 Resposta Última resposta
        1
        Responder
        • Responder como tópico
        Entre para responder
        • Mais Antigo para Mais Recente
        • Mais Recente para Mais Antigo
        • Mais Votados


        • Login

        • Não tem uma conta? Cadastrar

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