Packages

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
Avatar do usuário
MuLtAnI
Moderador
Moderador
Mensagens: 90
Registrado em: Ter, 01 Jun 2004 9:21 am
Localização: Videira - SC
Contato:

Estou iniciando meus estudos sobre packages e queria saber se eu posso utilizar uma instrução SQL dentro de uma procedure que esteja no body deste package

pois quando eu crio este package ele me dá erros e ao usar o comando SHO ERR para visualizar os erros ele ele siz que foi encontrado o select quando outros símbolos eram esperados:
segue o package

Selecionar tudo

Create PACKAGE OURPACK is
             TYPE t_testtype IS TABLE OF NUMBER  INDEX BY BINARY_INTEGER;
             procedure TestProc(p_TestArray t_testtype);
             end;

create PACKAGE BODY OURPACK as
   procedure TestProc(p_TestArray t_testtype) is
              v_variavel_local OurPack.testproc(p_testarray);
              QT_REG  number(10)    := 15;
              L_CDEMP CHAR(2)       := '01';
              L_CDFIL CHAR(4)       := '0001';
              L_NUSEQMOV CHAR(6)    := '000003';
              L_NUMERO  CHAR(10);
              j number(10) := 1;
              i number(10) := 0;
              begin
                while i < (QT_REG - 1) loop
                begin
                  v_variavel_local(i) := (
                         	               select nuseqite
                                           from drvicv
                                           where
                                           cdemp = L_CDEMP and
                                           cdfil = L_CDFIL and
                                           nuseqmov = L_NUSECMOV
                                           );
                  i := (i + 1);
                  while j <> QT_REG loop
                  begin
                    j := (j + 1);
                      if v_variavel_local(i + 1) <> v_variavel_local(j) then
                        L_NUMERO := (to_char(v_variavel_local(j)));
                  end;
                end;
              end;
se alguém tiver um bom material ou tutorial, eu agradeço....

falou
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

Olá MuLtAnI

Primeiro, tomei a liberdade de editar seu post - coloquei as tags CODE pra melhor visualizar o código... OK?

Sobre sua dúvida:

Selecionar tudo

v_variavel_local(i) := ( 
  select nuseqite 
  from drvicv 
  where 
  cdemp = L_CDEMP and 
  cdfil = L_CDFIL and 
  nuseqmov = L_NUSECMOV ); 
Isso é uma coisa que não pode ser feita em PL/SQL. Quando se usa um SELECT dentro do PL/SQL você deve usar a cláusula INTO pra receber o valor.

Selecionar tudo

select nuseqite 
INTO v_variavel_local(i) 
from drvicv 
where cdemp = L_CDEMP and 
cdfil = L_CDFIL and 
nuseqmov = L_NUSECMOV; 
Tente essa modificação!
Responder
  • Informação
  • Quem está online

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