Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Pessoal,
Tenho a seguintee situação,
tenho uma função, que compila normalmente,
sem problema algum,
mas quando mando executar,
retorna o seguinte erro
ORA-00306:número incorreto de tipos de argumentos para chamada '||';
ORA-06550: Linha 143, coluna 24,
Porém as linhas e colunas às quais o erro se refere
tem a seguinte instrução:
ANO_PROCEDIMENTO := EXTRACT(YEAR FROM DATAAGENDA);
ja tentei de todas as formas possiveis, e não consegui corrigir o erro,
usei varias funções para converter a data e nada,
abaixo, segue o codigo da função,
_______________________________________
create or replace
FUNCTION GER_ASSISTENCIAL_1
(
CODIAGENDAPRE IN NUMBER,
CODIUSUARIO IN NUMBER,
DATAAGENDA OUT DATE,
HORAAGENDA OUT DATE,
CODIEMPRESA OUT INTEGER,
NOMEEMPRESA OUT VARCHAR2,
CODIFUNCIONARIO OUT INTEGER,
NOMEFUNCIONARIO OUT VARCHAR2,
CODIFUNCIONARIOFUNCAO OUT INTEGER,
CODIMEDICO OUT INTEGER,
NOMEMEDICO OUT VARCHAR2,
CODICIDADE OUT INTEGER,
IDCIDADE OUT INTEGER,
CODIPCMSO OUT INTEGER,
FILHOFUNCAO OUT VARCHAR2,
NOMEFUNCAO OUT VARCHAR2,
CBO_FUNCAO OUT VARCHAR2,
CODIMEDICOPCMSO OUT INTEGER,
SOLIAGENDA OUT SMALLINT,
ENTRAGENDA OUT SMALLINT,
OBSEAGENDA OUT BLOB,
CODIPROCEDIMENTO OUT INTEGER,
CODICONVENCAO OUT INTEGER,
CODIAGENDAMENTO OUT INTEGER,
GFIPFUNCAO OUT VARCHAR2,
FILHOSECAO OUT VARCHAR2,
NOMESECAO OUT VARCHAR2,
FILHOSETOR OUT VARCHAR2,
NOMESETOR OUT VARCHAR2,
IDENFUNCIONARIO OUT VARCHAR2,
OIDEFUNCIONARIO OUT VARCHAR2,
UIDEFUNCIONARIO OUT VARCHAR2,
DANAFUNCIONARIO OUT DATE,
IDADFUNCIONARIO OUT INTEGER,
NOMECIDADE OUT VARCHAR2,
CRMMEDICO OUT VARCHAR2,
MES_PROCEDIMENTO OUT VARCHAR2,
ANO_PROCEDIMENTO OUT SMALLINT,
NOMECONVENCAO OUT VARCHAR2,
ATESPROCEDIMENTO OUT INTEGER,
ATRAPROCEDIMENTO OUT INTEGER,
SITUPROCEDIMENTO OUT INTEGER,
FLAGFATURA OUT SMALLINT,
IDPROCEDIMENTOAMB OUT INTEGER,
FILHOREGISTRO OUT VARCHAR2,
NIVELREGISTRO OUT NUMBER,
PAIREGISTRO OUT VARCHAR2,
CONTAR OUT NUMBER,
TAMANHO OUT NUMBER,
NIVELPAI OUT NUMBER,
CARACTER OUT VARCHAR2,
DADOSTRING OUT VARCHAR2,
INICSTRING OUT NUMBER,
QTDESTRING OUT NUMBER,
RET_STRING OUT VARCHAR2,
INSTRUCAO OUT VARCHAR2,
TAMANHOX OUT NUMBER,
RETLETRA OUT CHAR
) RETURN VARCHAR2 AS
BEGIN
SELECT AP.DATAAGENDA, AP.HORAAGENDA, AP.CODIEMPRESA, AP.CODIFUNCIONARIO,
AP.NOMEFUNCIONARIO, AP.CODIFUNCIONARIOFUNCAO, AP.CODIMEDICO, AP.NOMEMEDICO,
AP.CODICIDADE, AP.CODIPCMSO, AP.FILHOFUNCAO, AP.NOMEFUNCAO, AP.CBO_FUNCAO,
AP.CODIMEDICOPCMSO, AP.SOLIAGENDA, AP.ENTRAGENDA, AP.OBSEAGENDA,
AP.CODIPROCEDIMENTO, AP.CODICONVENCAO, AP.CODIAGENDAMENTO
INTO DATAAGENDA, HORAAGENDA, CODIEMPRESA, CODIFUNCIONARIO, NOMEFUNCIONARIO,
CODIFUNCIONARIOFUNCAO, CODIMEDICO, NOMEMEDICO, CODICIDADE, CODIPCMSO,
FILHOFUNCAO, NOMEFUNCAO, CBO_FUNCAO, CODIMEDICOPCMSO, SOLIAGENDA,
ENTRAGENDA, OBSEAGENDA, CODIPROCEDIMENTO, CODICONVENCAO, CODIAGENDAMENTO
FROM AGENDAPRE AP
WHERE AP.IDAGENDAPRE = CODIAGENDAPRE;
IF (CODIAGENDAMENTO = 0) THEN BEGIN -- INSERIR ASO
CODIAGENDAMENTO := (IDPROCEDIMENTOAMB + 1);
END;
END IF;
SELECT E.NOMEEMPRESA
INTO NOMEEMPRESA
FROM EMPRESA E
WHERE E.IDEMPRESA = CODIEMPRESA;
SELECT ME.GFIPFUNCAO
INTO GFIPFUNCAO
FROM MAPAEMPRESA ME
WHERE ME.FILHO = FILHOFUNCAO;
BEGIN
SELECT RET_PAIREGISTRO_1 (FILHOREGISTRO, NIVELREGISTRO, PAIREGISTRO, CONTAR, TAMANHO,
NIVELPAI, CARACTER, DADOSTRING, INICSTRING, QTDESTRING, RET_STRING, INSTRUCAO, TAMANHOX,
RETLETRA)
INTO FILHOSECAO
FROM DUAL;
END;
SELECT RET_PAIREGISTRO_1 (FILHOREGISTRO, NIVELREGISTRO, PAIREGISTRO, CONTAR,
TAMANHO, NIVELPAI, CARACTER, DADOSTRING, INICSTRING, QTDESTRING,
RET_STRING, INSTRUCAO, TAMANHOX, RETLETRA)
INTO FILHOSETOR
FROM DUAL;
SELECT ME.DESCORIGEM
INTO NOMESETOR
FROM MAPAEMPRESA ME
WHERE ME.FILHO = FILHOSETOR;
SELECT CAST(F.IDENFUNCIONARIO AS VARCHAR(30)), F.OIDEFUNCIONARIO, F.UIDEFUNCIONARIO,
F.DANAFUNCIONARIO
INTO IDENFUNCIONARIO, OIDEFUNCIONARIO, UIDEFUNCIONARIO, DANAFUNCIONARIO
FROM FUNCIONARIO F
WHERE F.IDFUNCIONARIO = CODIFUNCIONARIO;
IF (OIDEFUNCIONARIO IS NOT NULL) THEN BEGIN
IDENFUNCIONARIO := IDENFUNCIONARIO ||'/'|| OIDEFUNCIONARIO;
END;
END IF;
IF (UIDEFUNCIONARIO IS NOT NULL) THEN BEGIN
IDENFUNCIONARIO := IDENFUNCIONARIO ||'-'|| UIDEFUNCIONARIO;
END;
END IF;
IDADFUNCIONARIO := (CAST('NOW' AS DATE) - DANAFUNCIONARIO)/365;
SELECT C.NOMECIDADE
INTO NOMECIDADE
FROM CIDADE C
WHERE C.IDCIDADE = IDCIDADE;
SELECT P.RPROPROFISSIONAL
INTO CRMMEDICO
FROM PROFISSIONAL P
WHERE P.CODIPROFISSIONAL = CODIMEDICO;
SELECT PC.DESCPROCEDIMENTOCONV
INTO NOMECONVENCAO
FROM PROCEDIMENTOCONV PC
WHERE PC.IDPROCEDIMENTOCONV = CODICONVENCAO;
MES_PROCEDIMENTO := EXTRACT(MONTH FROM DATAAGENDA);
ANO_PROCEDIMENTO := EXTRACT(YEAR FROM DATAAGENDA);
ATESPROCEDIMENTO := 0;
ATRAPROCEDIMENTO := 0;
SITUPROCEDIMENTO := 0;
FLAGFATURA := 0;
INSERT INTO PROCEDIMENTOAMB (IDPROCEDIMENTOAMB, CODIEMPRESA, NOMEEMPRESA,
CODIFUNCIONARIO, NOMEFUNCIONARIO, IDENFUNCIONARIO, IDADPROCEDIMENTO,
CODIFUNCIONARIOFUNCAO, FSETPROCEDIMENTO, SETOPROCEDIMENTO,
FSECPROCEDIMENTO, SECAPROCEDIMENTO, FFUNPROCEDIMENTO, FUNCPROCEDIMENTO,
CBO_PROCEDIMENTO, GFIPPROCEDIMENTO, CODIPCMSO, DATAPROCEDIMENTO,
HSINPROCEDIMENTO, MES_PROCEDIMENTO, ANO_PROCEDIMENTO, CODIPROCEDIMENTO,
CODIMEDICO, MEDIPROCEDIMENTO, RMEDPROCEDIMENTO, CODIPROCEDIMENTOCONV,
CONVPROCEDIMENTO, CODICIDADE, NOMECIDADE, COORPROCEDIMENTO,
ATESPROCEDIMENTO, ATRAPROCEDIMENTO, SITUPROCEDIMENTO, OBSEPROCEDIMENTO,
SOLIPROCEDIMENTO, ENTRPROCEDIMENTO, FLAGFATURA, CODIAGENDAPRE, CODIUSUARIO)
VALUES (CODIAGENDAMENTO, CODIEMPRESA, NOMEEMPRESA, CODIFUNCIONARIO,
NOMEFUNCIONARIO, IDENFUNCIONARIO, IDADFUNCIONARIO, CODIFUNCIONARIOFUNCAO,
FILHOSETOR, NOMESETOR, FILHOSECAO, NOMESECAO, FILHOFUNCAO, NOMEFUNCAO,
CBO_FUNCAO, GFIPFUNCAO, CODIPCMSO, DATAAGENDA, HORAAGENDA,
MES_PROCEDIMENTO, ANO_PROCEDIMENTO, CODIPROCEDIMENTO, CODIMEDICO,
NOMEMEDICO, CRMMEDICO, CODICONVENCAO, NOMECONVENCAO, CODICIDADE,
NOMECIDADE, CODIMEDICOPCMSO, ATESPROCEDIMENTO, ATRAPROCEDIMENTO,
SITUPROCEDIMENTO, OBSEAGENDA, SOLIAGENDA, ENTRAGENDA, FLAGFATURA,
CODIAGENDAPRE, CODIUSUARIO);
UPDATE AGENDAPRE AP SET AP.CODIAGENDAMENTO = CODIAGENDAMENTO, AP.SITUAGENDA = 1
WHERE AP.IDAGENDAPRE = CODIAGENDAPRE;
BEGIN -- ALTERAR ASO --
SELECT E.NOMEEMPRESA
INTO NOMEEMPRESA
FROM EMPRESA E
WHERE E.IDEMPRESA = CODIEMPRESA;
END;
SELECT ME.GFIPFUNCAO
INTO GFIPFUNCAO
FROM MAPAEMPRESA ME
WHERE ME.FILHO = FILHOFUNCAO;
SELECT RET_PAIREGISTRO_1(FILHOREGISTRO, NIVELREGISTRO, PAIREGISTRO, CONTAR, TAMANHO,
NIVELPAI, CARACTER, DADOSTRING, INICSTRING, QTDESTRING, RET_STRING, INSTRUCAO,
TAMANHOX, RETLETRA)
INTO FILHOSECAO
FROM DUAL;
SELECT ME.DESCORIGEM
INTO NOMESECAO
FROM MAPAEMPRESA ME
WHERE ME.FILHO = FILHOSECAO;
SELECT RET_PAIREGISTRO_1(FILHOREGISTRO, NIVELREGISTRO, PAIREGISTRO,
CONTAR, TAMANHO, NIVELPAI, CARACTER, DADOSTRING, INICSTRING, QTDESTRING,
RET_STRING, INSTRUCAO, TAMANHOX, RETLETRA)
INTO FILHOSETOR
FROM DUAL;
SELECT ME.DESCORIGEM
INTO NOMESETOR
FROM MAPAEMPRESA ME
WHERE ME.FILHO = FILHOSETOR;
SELECT F.IDENFUNCIONARIO, F.OIDEFUNCIONARIO, F.UIDEFUNCIONARIO,
F.DANAFUNCIONARIO
INTO IDENFUNCIONARIO, OIDEFUNCIONARIO, UIDEFUNCIONARIO, DANAFUNCIONARIO
FROM FUNCIONARIO F
WHERE F.IDFUNCIONARIO = CODIFUNCIONARIO;
IF (OIDEFUNCIONARIO IS NOT NULL) THEN BEGIN
IDENFUNCIONARIO := IDENFUNCIONARIO ||'/'|| OIDEFUNCIONARIO;
END;
END IF;
IF (UIDEFUNCIONARIO IS NOT NULL) THEN BEGIN
IDENFUNCIONARIO := IDENFUNCIONARIO ||'-'|| UIDEFUNCIONARIO;
END;
END IF;
IDADFUNCIONARIO := (CAST('NOW' AS DATE) - DANAFUNCIONARIO)/365;
SELECT C.NOMECIDADE
INTO NOMECIDADE
FROM CIDADE C
WHERE C.IDCIDADE = IDCIDADE;
SELECT P.RPROPROFISSIONAL
INTO CRMMEDICO
FROM PROFISSIONAL P
WHERE P.CODIPROFISSIONAL = CODIMEDICO;
SELECT PC.DESCPROCEDIMENTOCONV
INTO NOMECONVENCAO
FROM PROCEDIMENTOCONV PC
WHERE PC.IDPROCEDIMENTOCONV = CODICONVENCAO;
MES_PROCEDIMENTO := EXTRACT(MONTH FROM DATAAGENDA);
ANO_PROCEDIMENTO := EXTRACT(YEAR FROM DATAAGENDA);
ATESPROCEDIMENTO := 0;
ATRAPROCEDIMENTO := 0;
SITUPROCEDIMENTO := 0;
UPDATE PROCEDIMENTOAMB SET CODIEMPRESA = CODIEMPRESA,
NOMEEMPRESA = NOMEEMPRESA, CODIFUNCIONARIO = CODIFUNCIONARIO,
NOMEFUNCIONARIO = NOMEFUNCIONARIO, IDENFUNCIONARIO = IDENFUNCIONARIO,
IDADPROCEDIMENTO = IDADFUNCIONARIO, CODIFUNCIONARIOFUNCAO = CODIFUNCIONARIOFUNCAO,
FSETPROCEDIMENTO = FILHOSETOR, SETOPROCEDIMENTO = NOMESETOR,
FSECPROCEDIMENTO = FILHOSECAO, SECAPROCEDIMENTO = NOMESECAO,
FFUNPROCEDIMENTO = FILHOFUNCAO, FUNCPROCEDIMENTO = NOMEFUNCAO,
CBO_PROCEDIMENTO = CBO_FUNCAO, GFIPPROCEDIMENTO = GFIPFUNCAO,
CODIPCMSO = CODIPCMSO, DATAPROCEDIMENTO = DATAAGENDA,
HSINPROCEDIMENTO = HORAAGENDA, MES_PROCEDIMENTO = MES_PROCEDIMENTO,
ANO_PROCEDIMENTO = ANO_PROCEDIMENTO, CODIPROCEDIMENTO = CODIPROCEDIMENTO,
CODIMEDICO = CODIMEDICO, MEDIPROCEDIMENTO = NOMEMEDICO,
RMEDPROCEDIMENTO = CRMMEDICO, CODIPROCEDIMENTOCONV = CODICONVENCAO,
CONVPROCEDIMENTO = NOMECONVENCAO, CODICIDADE = CODICIDADE,
NOMECIDADE = NOMECIDADE, COORPROCEDIMENTO = CODIMEDICOPCMSO,
ATESPROCEDIMENTO = ATESPROCEDIMENTO, ATRAPROCEDIMENTO = ATRAPROCEDIMENTO,
SITUPROCEDIMENTO = SITUPROCEDIMENTO, OBSEPROCEDIMENTO = OBSEAGENDA,
SOLIPROCEDIMENTO = SOLIAGENDA, ENTRPROCEDIMENTO = ENTRAGENDA,
CODIUSUARIO = CODIUSUARIO
WHERE IDPROCEDIMENTOAMB = CODIAGENDAMENTO;
RETURN NULL;
END GER_ASSISTENCIAL_1;
______________________________________________________________________________
Att,
Patrícia.
Carregando comentários...