DÚVIDAS COM PACKAGES

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Avatar do usuário
Spectreman
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Ter, 29 Mar 2005 4:56 pm
Localização: Tóquio
DOMINANTES, ÀS ORDENS!

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!
Avatar do usuário
dr_gori
Moderador
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

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... :?

Selecionar tudo

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
Avatar do usuário
Spectreman
Rank: Programador Sênior
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
Avatar do usuário
anderson
Rank: Analista Júnior
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..
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 12 visitantes