Erro store procedure

Prezados,

Estou tentando inserir registros aleatórios em uma tabela através de uma procedure utilziando o dbms.random para gerar os valores aleatórios.

estou tentando o seguinte:

create or replace procedure socpro.insere_teste(
handle number :=0;
nome varchar :='x';
i number :=1;
begin
  select round(dbms_random.value(1,5)) into handle from dual;
  select round(dbms_random.value(1,5)) into nome from dual;
  for i in 1 .. 10
    loop
      insert into socpro.teste_p(handle,nome) 
      values (handle,nome);
    end loop;
    commit;
end;
)

porém quando tento executar está retornando o seguinte erro.

LINE/COL ERROR
-------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2/18     PLS-00103: Encontrado o símbolo ";" quando um dos seguintes símbolos era esperado:       ) , * &

No caso de oracle, pela documentação, a sintaxe correta seria assim:

CREATE OR REPLACE procedure_name(arg1 data_type, ...) AS
BEGIN
  ....
END procedure_name;

Ou seja, vc não pode separar os parâmetros com ; e não tem esse parêntese no final.

FONTE: Developing and Using Stored Procedures

1 curtida

Consegui resolver da seguinte maneira :

create or replace procedure socpro.insere_teste as
vhandle int;
vnome varchar(20);
i int;
BEGIN 
  i :=0;
  FOR i IN  1..10 LOOP
     vhandle := round(dbms_random.value(1,10));
     vnome := dbms_random.string(1,15);
     insert into socpro.teste_p(handle,nome) 
      values (vhandle,vnome);
    END LOOP;
    commit;      
END;
1 curtida