* Versão do Oracle: 10g
* Sistema Operacional: Red Hat 4
Boa tarde pessoal !
Estou tentando fazer esta procedure retornar um valor, mas dá um erro na hora que é executada. Fiz alguns testes e me parece que o erro está no SYS_REFCURSOR. Pesquisei, mas não encontrei algo que pudesse me exclarecer. Busquei um exemplo na net para montar essa proceudre. Se alguém puder me ajudar, desde já agradeço.
SQL> execute nfiscal(334094);
begin nfiscal(334094); end;
ORA-06550: line 2, column 7:
PLS-00306: wrong number or types of arguments in call to 'NFISCAL'
ORA-06550: line 2, column 7:
PL/SQL: Statement ignored
CREATE OR REPLACE PROCEDURE NFISCAL (MOV IN NUMBER, OBS OUT SYS_REFCURSOR)
IS
BEGIN
OPEN OBS FOR SELECT (CASE WHEN(SELECT TMOV.CODTB5FLX
FROM TMOV
WHERE IDMOV=MOV
AND TMOV.CODFILIAL<=2)='01' AND (SELECT SUM(VALOR) FROM TTRBMOV
WHERE IDMOV=388670
AND CODTRB IN ('INSS','IRRF','ISS','ISSD'))=0 THEN
'LOCAÇÃO ISENTO DE IRRF E ISS'
WHEN (SELECT FCFO.RETENCAOISS
FROM TMOV,FCFO
WHERE TMOV.CODCFO=FCFO.CODCFO
AND TMOV.IDMOV=MOV
AND TMOV.CODTB5FLX <> 1
AND TMOV.CODFILIAL=6)=1 THEN
'Tomador do Serviço Responsável pelo Recolhimento de ISS, conforme Lei complementar nº 28 de 18/02/2003
- Art. 199 - Parágrafo Único - Inciso II - Item 7.09.'
WHEN (SELECT FCFO.RETENCAOISS
FROM TMOV,FCFO
WHERE TMOV.CODCFO=FCFO.CODCFO
AND TMOV.IDMOV=MOV
AND TMOV.CODTB5FLX <> 1
AND TMOV.CODFILIAL=5)=1 THEN
'Tomador do Serviço Responsável pelo Recolhimento de ISS, conforme Lei Municipal nº 2.528/2003 -
Art. 8º - Inciso II - Item 7.09.'
WHEN (SELECT FCFO.RETENCAOISS
FROM TMOV,FCFO
WHERE TMOV.CODCFO=FCFO.CODCFO
AND TMOV.IDMOV=MOV
AND TMOV.CODTB5FLX <> 1
AND TMOV.CODFILIAL=4)=1 THEN
'Tomador do Serviço Responsável pelo Recolhimento de ISS, conforme Lei Complementar nº 116/2003
- Art. 6º - Parágrafo 2º - Inciso II - Item 7.09.' END)
FROM DUAL;
END;