Erro a executar procedures para o banco de dados postgresql

Utilizo banco de dados PostgreSQL, neste banco utilizo algumas procedures e funções como regras de negocio e outras como rotinas internas para controles. No scriptcase eu as chamo através de aplicações formulários, opção Procedures e em alguns casos a macro sc_exec_sql (consultas, blank,…), contudo venho observando que desde a versão 9.10.015 estou enfrentando alguns erro pontuais, como:

ERROR: function base.execucao_ordem(integer, integer, integer, integer, integer, unknown, integer, unknown) does not exist LINE 1: SELECT base.execucao_ordem( 1360, 1, 2399, 4, 1012, ’ ', 2, … ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts.
{SC_DB_ERROR_INI}View SQL{SC_DB_ERROR_MID}SELECT execucao_ordem( 1360, 1, 2399, 4, 1012, ’ ', 2, ‘002901’){SC_DB_ERROR_CLS}Close{SC_DB_ERROR_END}

Mesmo passando o tipo na instrução da macro sc_exec_sql(“base.execucao_ordem( 1360, 1, 2399, 4, 1012, ’ '::character varying, 2, ‘002901’::character varying)”) o erro ainda persiste, na opção do formulário o próprio SC não consegue identificar e traduzir os tipos .

A minha pergunta é alguém conseguiu contornar ou solucionar este problema?

Observei que o SC esta passando a para o banco o comando select e não call para chamar as procedures

não é o SC, é você quem monta a instrução de chamada no parâmetro da macro.

Haroldo, estou passando os atributos para a macro corretamente, ex.

$update = “call base.execucao_ordem($idEvento, $categoria, $cdOrdem, $idStatusOrdem,$cdProcesso,’$dsProcesso’, $idStatus, ‘$nuContrato’)”;

sc_exec_sql ("$update");

até achei que seria algum problema na identificação do tipo, dai passei os tipos junto com os atributos

coloca o modo debug e veja a forma que o SC esta montando.

Esse é o retorno no debug

7: ERROR: base.execucao_ordem(integer, integer, integer, integer, integer, unknown, integer, unknown) is a procedure LINE 1: SELECT base.execucao_ordem( 1408, 1, 1766, 4, 1012… ^ HINT: To call a procedure, use CALL.

           ADOConnection._Execute(SELECT  base.execucao_ordem( 1408, 1, 1766, 4, 1012, ' ', 1, 'A53145'), false) % line 1156, file: adodb.inc.php
        ADOConnection.Execute(SELECT  base.execucao_ordem( 1408, 1, 1766, 4, 1012, ' ', 1, 'A53145')) % line 5239, file: frm_processoOrdem_apl.php
     frm_processoOrdem_apl.nm_acessa_banco() % line 1752, file: frm_processoOrdem_apl.php
  frm_processoOrdem_apl.controle() % line 2989, file: index.php

ajax_frm_processoOrdem_apl_submit_form(1.408, 1766, A5-3145, , , , , 4, 1, , 1012, 1, 1, , alterar, , , , 1, 9;gkU$.Av3.76[P.T60OD00pP)q4.o9@hf7db5!P52d9yCUTv0PAaS}f;p4u56) % line 122, file: frm_processoOrdem_apl_sajax.php

observe que o SC esta passando SELECT ou invés de CALL

remove essas aspas do parâmetro:

sc_exec_sql ($update);

Haroldo, retirei e o erro persiste.

Ecaminhe para bugs@netmake.com.br

Eu utilizo a macro o tempo todos e não surge Esse problema.

Qual a versão do seu SC?

Versão 9.10.021, a mais recente.

Sugiro o mesmo que @buhlerax, enviar email para bugs@scriptcase.com.br.

Pois é estranho, somente para você a ferramenta trocar a instrução SQL nessa macro.

1 Curtida

Alexandre,
Acabei de enviar, pois estou com uma atualização atrasada para um cliente. Também não atualizei o ambiente de produção de meus clientes, estou com receio de ocorrer o mesmo problema com a as funções e stored procedures já existentes, uma vez que estou tendo problemas no ambiente DEV tanto para as rotinas antigas, quanto para novas que criei.

1 Curtida

Você também utiliza postgres? Não estou tendo este problema para o banco de dados MySQL e Sql Server.

Sim Utilizo, mas não estou com a versão/release do SC atualizada para última.