Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Erro de Runtime quando Executa Procedure

Olá a Todos

Estou fazendo um teste para a chamada de uma Stored Procedure no banco através do Qlikview.

Dei uma pesquisada e vi que o comando é "CALL".

O meu script é basicamente este:

// variaveis

LET vMes = 0 & num(Month(Today()));

LET vAno =  year(today());

LET pAnoMes = ($(vAno)&$(vMes));

//conexao

OLEDB CONNECT TO [Provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=[MEU_USUARIO];Data Source=[MEU_SERVIDOR];Extended Properties=""] (XPassword is [MINHA_SENHA]);

//comando

SQL

CALL SP_BALAN ('AGRUPAMENTO',  2, 1,'1', NULL, $(pAnoMes),'    ', 'CONTA', 0, 5, 'N', 'N');

Depois que eu o executo aparece o erro que esta anexo.

Alguém sabe o que pode ser?

Obrigado pela ajuda

Labels (2)
1 Solution

Accepted Solutions
Not applicable
Author

Minhas aplicações geralmente fazem chamada de procedures, e na versão 10 SR2 não apresentou nenhum problema.

Creio que deva ter sido alguma versão anterior da versão 9 que deu este problema, ou até mesmo durante a instalação.

Procure sempre utilizar as versões mais recentes do qlikview, pois sempre estão com as correções dos problemas reportados.

Abraços!

View solution in original post

17 Replies
Not applicable
Author

Boa Tarde,

Você poderia realizar dois teste para tentar identificar o problema.

O primeiro é se o problema esta na execução da procedure, neste caso tente executa-la passando os mesmos parâmetros utilizados no Qlikview.

O segundo é se esta havendo a comunicação com o banco de dados. Verifique através de uma consulta simples se existe o retorno das informações do banco de dados.

Desta forma saberá qual a origem do erro (Qlikview ou BD). Eu utilizo chamada de procedures em oracle e nunca me deparei com este erro, a versão que utilizo é QV 9.0 SR6.

Abraços

erichshiino
Partner - Master
Partner - Master

Poderia tentar também utilizar

SQL Exec (...)

... mas qual é o tipo de procedure que está executando? É para execução de comandos no banco, para retornar um valor único ou retornar uma tabela completa?

É preciso verificar se seu usuário tem a permissão para chamar procedures no banco.

Verifique também se esta procedure irá gravar no banco. Caso grave, seria preciso incluir "mode is write" na string de conexão, e marcar a opção "Open Databases in read and write mode" na tela de scripts, na parte de baixo, na aba settins.

Abraços,

Erich

Not applicable
Author

Olá Correa, Obrigado pela resposta.

Bem vamos lá:

  • O primeiro é se o problema esta na execução da procedure, neste caso tente executa-la passando os mesmos parâmetros utilizados no Qlikview.
    • Eu testei a procedure executando direto no banco e funcionou sem problemas.
  • O segundo é se esta havendo a comunicação com o banco de dados. Verifique através de uma consulta simples se existe o retorno das informações do banco de dados.
    • Existe comunicação entre o banco. Consultei algumas tabelas e retornou informações corretamente.

Quanto a questão de versão, estou fazendo na 10. Vou tentar instalar a anterior e ver se funciona.

Obrigado

Not applicable
Author

Uma outra verificação é ver se os parâmetros estão sendo passados corretamente.

Crie uma procedure sem parâmetros e verifique se ela executa, se em algum trecho da procedure vc faz delete, insert, update em alguma tabela, é necessário alterar a conexão como modo de escrite (write mode).

Eu utilizo a seguinte conexão em meus acessos (Oracle):

CONNECT TO [Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=SEU_USUARIO; Password=SUA_SENHA; Data Source=SUA_BASE;Extended Properties=""; mode is write;];

Caso rode sem apresentar o erro, acredito que os campos passados como parâmetros estejam com problemas.

Também utilizo o comando CALL para as chamadas das procedures, mas verifique se com o comando EXEC conforme mencionado pelo Erich resolve.

Abraços!

Not applicable
Author

Olá ecorrea

Fiz estes testes e deu certo a execuçao da procedure no banco.

Porém depois que o script do QlikView finaliza ele apresenta esse erro. E fecha a aplicação.

Ainda estou tentando depurar para saber se é algum módulo ou DLL que está em conflito, porque essa carga está sendo feita através da minha estação.

Obrigado a ajuda de todos.

Not applicable
Author

Ok,

Só para saber, você executa algum script (macro) após a execução da sua carga?

Caso sim, tente registrar o arquivo vbscript.dll

Regsvr32 "C:\Windows\System32\vbscript.dll"

Abraços

Not applicable
Author

Não. Executo apenas essa instrução. Meu scipt tá dessa forma:

CONNECT TO [Provider=OraOLEDB.Oracle.1;Persist Security Info=True;User ID=USUARIO; Password=SENHA; Data Source=BANCO;Extended Properties=""; mode is write;];

SQL

CALL SP_BALAN_BI ('AGRUPAMENTO',  2,  1, '1', NULL,'200906',  '    ','CONTA', 0, 5, 'N', 'N');

SQL

SELECT * FROM EL_BALAN_BI

WHERE CDPESSOAUSR=2;

Percebi que depois que ele passa pela procedure ele gera o erro. O select nem chega a executar.

Not applicable
Author

Bom Dia,

Parece que o erro este realmente dentro da procedure.

Acredito que você deva debugar até encontrar onde esta o problema, mas como ocorre somente quando executado pelo qlikview o Debug deve ser feito manualmente até achar a falha.

Crie uma tabela temporaria com apenas um campo (tipo number), e em determinados trechos da procedure de um insert na tabela (numerando estas fases) e logo em seguida de um commit para que estes registros fiquem gravados. Desta forma você conseguirá ver em que etapa esta gerando o erro.

Abraços

Not applicable
Author

Bom dia correa

O erro não está na procedure.

Eu instalei a versão 8.5 e funcionou tudo perfeitamente.

Eu quero testar na versão 9, porém não tenho o instalador.