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
  

Mensagemem Qui, 03 Jun 2004 3:47 pm

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

Código: Selecionar todos
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
MuLtAnI
Localização: Videira - SC


Mensagemem Qui, 03 Jun 2004 10:32 pm

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:
Código: Selecionar todos
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.

Código: Selecionar todos
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!
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered



Voltar para PL/SQL

Quem está online

Usuários navegando neste fórum: Google [Bot] e 5 visitantes