Numa determina aplicação em forms, eu preciso passar como parametro um vetor para um package.
Afinal tenho que filtrar uma tabela de acordo com os códigos que chegarem da aplicação em forms, o problema é que em determinado momento o usuário pode não passar nenhum código e hora ele pode passa N códigos.
Se eu mapear uma String e passar os códigos em uma só linha corro o risco de em algum momento estourar o tamanho da mesma.
É claro que posso contornar esse problema utilizando uma tabela temporária, mas eu gostaria de saber se eu posso utilizar uma variável do tipo cursor e se sim, como fazer isso.
Desde já, Obrigado!
DÚVIDAS COM PACKAGES
- Spectreman
- Rank: Programador Sênior
- Mensagens: 48
- Registrado em: Ter, 29 Mar 2005 4:56 pm
- Localização: Tóquio
DOMINANTES, ÀS ORDENS!
- dr_gori
- Moderador
- Mensagens: 5024
- Registrado em: Seg, 03 Mai 2004 3:08 pm
- Localização: Portland, OR USA
- Contato:
Thomas F. G
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered
Fala Spectre...
Cara, eu nunca fiz isso - de passar um vetor como parâmetro.
Acho que eu usaria uma temporária mesmo...
A dica abaixo não é viável exatamente porque pode estourar:
(ela pega uma variável e quebra em várias linhas de uma tabela)
É interessante, mas não se aplica ao caso...
Cara, eu nunca fiz isso - de passar um vetor como parâmetro.
Acho que eu usaria uma temporária mesmo...
A dica abaixo não é viável exatamente porque pode estourar:
(ela pega uma variável e quebra em várias linhas de uma tabela)
É interessante, mas não se aplica ao caso...
set ver off
def Del='@'
def String="@0@11@222@3333@44444@555555@6666666@77777777@888888888"
select
Rownum Row#,
SUBSTR(A.Str||'&Del'
, INSTR(A.Str||'&Del' , '&Del', 1, Rownum ) +1
, INSTR(A.Str||'&Del' , '&Del', 1, Rownum+1)
-INSTR(A.Str||'&Del' , '&Del', 1, Rownum ) -1
) Token
From
(
select
'&String' Str
from dual
)
A,
all_objects B
where
Rownum< length(A.Str)-length(REPLACE(A.Str,'&Del'))+1
;
ROW# TOKEN
---------- -------------------------------------------------------
1 0
2 11
3 222
4 3333
5 44444
6 555555
7 6666666
8 77777777
9 888888888
- Spectreman
- Rank: Programador Sênior
- Mensagens: 48
- Registrado em: Ter, 29 Mar 2005 4:56 pm
- Localização: Tóquio
DOMINANTES, ÀS ORDENS!
Muito Obrigado meu Grande Inimigo!!!
Eu até usaria a tabela temporaria... Mas sua dica foi interessantissima e eu vou aproveita-la, acho que desta forma terei ganho de performace.
Obrigado
Eu até usaria a tabela temporaria... Mas sua dica foi interessantissima e eu vou aproveita-la, acho que desta forma terei ganho de performace.
Obrigado
- anderson
- Rank: Analista Júnior
- Mensagens: 75
- Registrado em: Seg, 06 Jun 2005 1:08 pm
- Localização: Toledo - PR
- Contato:
Anderson Nuernberg
---
---
uma sugestão...
se você sabe a quantidade máxima de parametros, você pode criar os parametros na package com valor defaut, ai na chamada não é necessário passar os parametros, somente se você tiver o valor...
se achar interessante essa dica, me comunique que passo alguns exemplos...
falow..
se você sabe a quantidade máxima de parametros, você pode criar os parametros na package com valor defaut, ai na chamada não é necessário passar os parametros, somente se você tiver o valor...
se achar interessante essa dica, me comunique que passo alguns exemplos...
falow..
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes