Caros amigos, como faço para inicar a leitura de um cursor a partir da X linha? Por exemplo, fiz a leitura de um cursor que possui 300 linhas até a 150, sai dela e quero continuar a partir da linha 151. alguém sabe como fazer isto?
Abraços,
Cesar
LINHA ESPECIFICA DE UM CURSOR
-
- Rank: Estagiário Sênior
- Mensagens: 8
- Registrado em: Qui, 29 Jun 2006 3:03 pm
- Localização: MARINGA-PR
Cesar Luis de Carvalho
Maringá-PR
Maringá-PR
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Brother,
Você tem alguma sequence nesta tabela?
Talvez conseguisse com Rownum, não sei se seria muito confiável.
Você tem alguma sequence nesta tabela?
Talvez conseguisse com Rownum, não sei se seria muito confiável.
- fabricio.silva
- Rank: Programador Pleno
- Mensagens: 34
- Registrado em: Seg, 12 Mar 2007 7:07 am
- Localização: Catanduva/SP
Fabricio M. Silva
Oracle Certified Associate
------------------------------
Catanduva - SP
Oracle Certified Associate
------------------------------
Catanduva - SP
Olá,
Acho mais fácil e melhor em questão de performance, você usar uma PL/SQL Table.
Joga tudo pra PL/SQL Table e depois só trabalha com on indices
Abs
Acho mais fácil e melhor em questão de performance, você usar uma PL/SQL Table.
Joga tudo pra PL/SQL Table e depois só trabalha com on indices
Abs
-
- Rank: Estagiário Sênior
- Mensagens: 8
- Registrado em: Qui, 29 Jun 2006 3:03 pm
- Localização: MARINGA-PR
Cesar Luis de Carvalho
Maringá-PR
Maringá-PR
Fabrício, obrigado pela dica. você teria algum modelo de como usar a PL/SQL TABLE?
Trevisolli, no caso da sequence, creio que nào funcionaria.
Trevisolli, no caso da sequence, creio que nào funcionaria.
-
- Moderador
- Mensagens: 2016
- Registrado em: Qua, 12 Jan 2005 3:25 pm
- Localização: Araraquara - SP
Abraço,
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP
Cesar,
Realmente, pela PK, por exemplo, daria certo, caso você quisesse continuar à partir de um determinado valor de uma coluna, como no exemplo abaixo:
Agora, caso queira continuar pela quantidade de linhas já exibidas, a dica do Fabrício se encaixa legal, creio eu.
Você poderia trabalhar pelo índice da PL/SQL table.
Aqui mesmo no fórum tem um exemplo:
http://glufke.net/oracle/viewtopic.php?p=2513
qualquer coisa, manda ai.
Realmente, pela PK, por exemplo, daria certo, caso você quisesse continuar à partir de um determinado valor de uma coluna, como no exemplo abaixo:
DECLARE
CURSOR CUR_LISTA ( P_NRO_INICIAL NUMBER )
IS
SELECT *
FROM TB_TESTE
WHERE ID >= P_NRO_INICIAL;
BEGIN
FOR X IN CUR_LISTA(6)
LOOP
dbms_output.put_line('ID: ' || X.ID || ' Nro. Nf: ' || X.NRO_NF);
END LOOP;
END;
DESC TB_TESTE;
Processing ...
DESC TB_TESTE;
Describing TB_TESTE....
NAME Null? Type
------------------------------- --------- -----
NRO_NF VARCHAR2(10)
ID NOT NULL NUMBER(10,0) -- PK
Você poderia trabalhar pelo índice da PL/SQL table.
Aqui mesmo no fórum tem um exemplo:
http://glufke.net/oracle/viewtopic.php?p=2513
qualquer coisa, manda ai.
- fabricio.silva
- Rank: Programador Pleno
- Mensagens: 34
- Registrado em: Seg, 12 Mar 2007 7:07 am
- Localização: Catanduva/SP
Fabricio M. Silva
Oracle Certified Associate
------------------------------
Catanduva - SP
Oracle Certified Associate
------------------------------
Catanduva - SP
Fala Cesar, ai vai:
Espero que ajude.
Abs.
declare
-- Declaraçao do registro
type rec_func is record
(codigo t_func.codigo%type,
nome t_func.nome%type,
cargo varchar2(20));
-- aqui é a declaraçao da pl/sql table
type tab_func is table of rec_func index by binary_integer;
-- variavel
var_func tab_func;
cursor c_func is
select
rownum,
codigo,
nome,
cargo
from
t_func;
nIndice pls_integer;
begin
-- Carrega o cursor na pl/sql table
for rFunc in c_func loop
nIndice := rFunc.rownum;
var_func(nIndice).codigo := rFunc.codigo;
var_func(nIndice).nome := rFunc.nome;
var_func(nIndice).cargo := rFunc.cargo;
end loop;
.
.
.
-- aqui você pode fazer o loop a partir de qualquer registro
for nIndice in 1..var_func.count loop
..
end loop;
.
.
.
for nIndice in 150..var_func.count loop
..
end loop;
end;
/
Abs.
-
- Rank: Estagiário Sênior
- Mensagens: 8
- Registrado em: Qui, 29 Jun 2006 3:03 pm
- Localização: MARINGA-PR
Cesar Luis de Carvalho
Maringá-PR
Maringá-PR
Fabrio, tua dica foi muito valiosa. Obrigado. É o que preciso.
Trevisolli, valeu pela dica. Como você disse, na minha situação, a solução do Fabrício se encaixa na minha lógica.
Abraços,
Trevisolli, valeu pela dica. Como você disse, na minha situação, a solução do Fabrício se encaixa na minha lógica.
Abraços,
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante