- Este tópico contém 27 respostas, 5 vozes e foi atualizado pela última vez 16 anos, 8 meses atrás por
Regis Araujo.
-
AutorPosts
-
22 de junho de 2009 às 4:44 pm #87415
Itimura
Participantedesculpem pela má formatação no forum!!
foi mau!!
🙁
22 de junho de 2009 às 7:17 pm #87427Regis Araujo
ParticipanteFala Itimura..
Bom, a maneira de como vc utilizar está no exemplo que eu passei..
Com o Cursor…
Abraços..
22 de junho de 2009 às 8:16 pm #87431Itimura
ParticipanteThunder,
ocorreram 2 erros que não to conseguindo decifrar
1: Erro(9,10): PLS-00103: Encontrado o símbolo “CCURSOR” quando um dos seguintes símbolos era esperado: := . ( @ % ;
BEGINCURSOR cCursor IS
--CAMPO A SEREM BUSCADOS</code>2:Erro(70,1): PLS-00103: Encontrado o símbolo "END" quando um dos seguintes símbolos era esperado: begin function package pragma procedure subtype type use form current cursor
ORDER BY MOV.CODCLI;END REL_REEMBOLSO;
22 de junho de 2009 às 9:14 pm #87433Regis Araujo
ParticipanteOpa..
Desculpa..
Eu lhe passei algo errado.. Se for para trazer apenas os valores do seu select.. Vc faz assim..
CREATE OR REPLACE PROCEDURE REL_REEMBOLSO(dtINICIO IN DATE,
dtFIM IN DATE,
fORNEC IN NUMBER,
cCursor OUT TYPE%TYPE_CURSOR) ISBEGIN
OPEN cCursor FOR
Desculpe..
Espero que agora resolva..
Abraços..
22 de junho de 2009 às 10:24 pm #87439Itimura
ParticipanteAmigo, estamos caminhando para uma solução…
seguinte erro:
CREATE OR REPLACE PROCEDURE REL_REEMBOLSO(dtINICIO IN DATE,
dtFIM IN DATE,
fORNEC IN NUMBER,
cCursor OUT TYPE%TYPE_CURSOR) ISBEGIN
OPEN cCursor FOR
Erro(1): PL/SQL: Compilation unit analysis terminated
Erro(5,61): PLS-00208: o identificador ‘TYPE_CURSOR’ não é um atributo de cursor válido23 de junho de 2009 às 1:19 am #87458Regis Araujo
ParticipanteOla amigo..
Bom.. acho que faltou um Type do tipo Type Cursor…
Cria um Type com o comando abaixo…
create or replace package types
as
type CursorType is ref cursor;
end;Ai vc faz assim…
CREATE OR REPLACE PROCEDURE REL_REEMBOLSO(dtINICIO IN DATE,
dtFIM IN DATE,
fORNEC IN NUMBER,
cCursor OUT TYPE.CursorType) ISBEGIN
OPEN cCursor FOR
Acho que agora vai…
Abraços…
23 de junho de 2009 às 1:20 am #87459Regis Araujo
ParticipanteOpa..
Retificando de novo…
o correto é TYPES.CursorType.. e não TYPE.CursorType
Abraços…
23 de junho de 2009 às 2:57 pm #87464Itimura
ParticipanteThunder vc tem sido um cara super paciente, obrigado..
antes de ler como fiz abaixo lembre-se essa é minha primeira procedure no oracle
Foi Compilado, mas creio que da forma que fiz ão esta correta, pois quando vou chama-la no Crystal ele reclama do cursor
Crystal Reports
Database Connector Error: “ADO Error Code 0x80040e14
Source: Microsoft OLE DB Provider for Oracle
Description: ORA-06550: line 1, column 15:
PLS-00225: subprogram or cursor ‘TESTE’ reference is out of scope
ORA-06550: line 1, column 7:
PL/SQL: Statement ignoredNative Error: 6550 [Database Vendor Code: 6550]
:s
Eu reescrevi como consegui entender e ficou assim:
create or replace
PROCEDURE RELAT_REEMBOLSOcreate or replace package types as type CursorType is ref cursor; end;(dtINICIO IN DATE,
dtFIM IN DATE,
fORNEC IN NUMBER,
cCursor OUT TYPE.CursorType) ISBEGIN
OPEN cCursor FOR
23 de junho de 2009 às 4:03 pm #87465Regis Araujo
ParticipanteOpa amigo.. bom dia..
Bom, não entendo de Reports.. mas vou ajudar no que for necessário..
Acho que o erro pode estar na declaração do CursorType.. Eu havia passado para vc declarar como TYPE.CursorType e o correto é TYPES.CursorType com S no final do TYPE..
Cria procedure e realiza um teste com ela.. Execute sem ser no Crystal.. E ve se como retornam os valores.
Abraços..
26 de junho de 2009 às 4:45 pm #87529Itimura
ParticipanteColegas, desculpem por voltar aqui ao problema estive doente e não pude retornar ao serviço…
Thunder,
um único erro aconteceu apontando para:
Erro: Encontrado um simbolo “CREATE” quando um dos simbolos era esperado “(”
Tipo… o meu cursor ta no local errado? ja tentei modificar e tb alterar, voltei ao primeiro ponto para exclarecer a dúvida
create or replace
PROCEDURE RELAT_REEMBOLSO -- aqui acontece a marca do errocreate or replace package types as type CursorType is ref cursor; end;(dtINICIO IN DATE,
dtFIM IN DATE,
fORNEC IN NUMBER,
cCursor OUT TYPES.CursorType) ISBEGIN
26 de junho de 2009 às 5:27 pm #87530Regis Araujo
ParticipanteFala Itimura…
O Create or Replace TYPE é para vc rodar apartado.. Assim ele irá criar um TYPE que vc vai utilizar na Procedure…
create or replace package types as type CursorType is ref cursor; end;Vc cria este TYPE apenas 1 vez.. e não precisa rodar ele mais..
Abraços..
26 de junho de 2009 às 6:14 pm #87533Itimura
ParticipanteThunder…
Parabéns!
FUNCIONA!!!!
ficou assim:
Criação do Cursor
create or replace package types
as
type CursorType is ref cursor;
end;
Procedure:
create or replace
PROCEDURE RELAT_REEMBOLSO(dtINICIO IN DATE,
dtFIM IN DATE,
fORNEC IN NUMBER,
cCursor OUT TYPES.CursorType) ISBEGIN
OPEN cCursor FOR
--CAMPO A SEREM BUSCADOS SELECT MOV.NUMNOTA AS "NOTA FISCAL", NF.DTSAIDA AS "DATA DE EMISSAO", NF.CONDVENDA AS "COD VENDA", MOV.CODCLI AS "COD CLIENTE", CLI.CLIENTE AS "CLIENTE", MOV.CODFORNEC AS "COD FORNECEDOR", FORNEC.FORNECEDOR AS "FORNECEDOR", MOV.CODSEC AS "COD SEÇÃO", SEC.DESCRICAO AS "DESCRIÇÃO SEÇÃO", MOV.CODPROD AS "COD PRODUTO", PRO.DESCRICAO AS "PRODUTO", MOV.QT AS "QUANTIDADE VENDIDA", MOV.PTABELA AS "PREÇO UNITARIO", RCA.CODUSUR AS "CODIGO RCA", RCA.NOME AS "RCA" --TABELAS COM ALIAS FROM PCNFSAID NF, PCMOV MOV, PCPRODUT PRO, PCCLIENT CLI, PCFORNEC FORNEC, PCSECAO SEC, PCUSUARI RCA --"JOIN" WHERE NF.NUMNOTA = MOV.NUMNOTA AND MOV.CODPROD = PRO.CODPROD AND MOV.CODCLI = CLI.CODCLI AND FORNEC.CODFORNEC = MOV.CODFORNEC AND SEC.CODSEC = MOV.CODSEC AND RCA.CODUSUR = MOV.CODUSUR --CONDIÇOES AND NF.DTSAIDA BETWEEN dtINICIO AND dtFIM AND NF.CONDVENDA IN (1, 5) AND MOV.CODFORNEC = fORNEC AND MOV.CODCLI IN-- POR DESCARGO DE CONCIENCIA.. MUDANDO OS "ALIAS" DAS TABELAS...
-- VERIFICAR A REAL NECESSIDADE DE REALIZAR O SELECT ABAIXO...
-- AJUSTANDO PODE-SE OBTER O MESMO RESULTADO APENAS COM O SELECT ACIMA...(SELECT NF2.CODCLI FROM PCNFSAID NF2, PCMOV MOV2, PCPRODUT PRO2, PCCLIENT CLI2 WHERE NF2.NUMNOTA = MOV2.NUMNOTA AND MOV2.CODPROD = PRO2.CODPROD AND MOV2.CODCLI = CLI2.CODCLI AND NF2.CONDVENDA||MOV.CODFORNEC = 51 -- AJUSTANDO PARA MELHORAR SEU SELECT...-- AND NF2.CONDVENDA = 5
-- AND MOV2.CODFORNEC = 1
AND NF2.DTSAIDA BETWEEN dtINICIO AND dtFIM)ORDER BY MOV.CODCLI;END RELAT_REEMBOLSO;
Valew!@
Grande abraço []’s
26 de junho de 2009 às 7:18 pm #87544Regis Araujo
ParticipanteOpa..
Ainda bem que pude lhe ajudar..
Abraços…
-
AutorPosts
- Você deve fazer login para responder a este tópico.