Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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!
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
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
Olá Correa, Obrigado pela resposta.
Bem vamos lá:
Quanto a questão de versão, estou fazendo na 10. Vou tentar instalar a anterior e ver se funciona.
Obrigado
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!
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.
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
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.
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
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.