Procedimiento compila pero no ejecuta en oracle 11g

He creado un procedimiento en oracle sql developer, el cual compila pero cuando le doy a ejecutar no hace nada ni siquiera mensaje de error, es un procedimiento para ingresar datos a una tabla, tomando estos datos aleatoriamente de otra tabla.

Cuando lo he querido ejecutar desde el "Get Started With Oracle Database 11g Express Edition" el exec ProAgenda(1000); me sale error ORA-00900: invalid SQL statement.

Esto es una tarea que me han pedido que haga pasar una base de datos de sql server a Oracle, pero la sintaxis de oracle casi no la conozco, te dejo el script para que tengas un mejor conocimiento, es llenar datos a tabla Agenda de datos de una tabla People aleatoriamente, la cantidad de registros serán 1000, 10000 y 100000, queremos controlar el tiempo d ejecución y comparar, Muchas gracias por la ayuda, espero pronta respuesta:

Create or replace
procedure ProAgenda (numero number)
as
contador number(6);
nameA varchar(12):='';
surnameA
varchar(40):='';
dateofbirth date;
salary number(5);
begin
while contador <=
numero loop
contador:=contador+1;
select NameP into
nameA FROM (SELECT NameP FROM People ORDER BY dbms_random.value) WHERE rownum =
1;
select((SELECT
RTRIM(SurnameP1) FROM (SELECT SurnameP1 FROM People ORDER BY dbms_random.value)
WHERE rownum = 1)||' '||(SELECT SurnameP2 FROM (SELECT SurnameP2 FROM People
ORDER BY dbms_random.value) WHERE rownum = 1))INTO surnameA FROM DUAL;
select(select to_date('01/01/1950','DD/MM/YYYY')+
(SELECT round(DBMS_RANDOM.VALUE(1,14600)) FROM dual) from dual)INTO dateofbirth
FROM DUAL;
select(SELECT
round(DBMS_RANDOM.VALUE(1000,4000)) FROM dual)INTO salary from dual;
insert into Agenda
values (contador,nameA,surnameA,dateofbirth,salary);
end loop;
end;

exec ProAgenda(1000);

1 respuesta

Respuesta

Para comenzar, por favor aclarame si ese procedimiento lo estas creando en la base de datos. Adicional, como lo esta tratando de ejeutar. Ya que para la bd el comando exec no lo reconoce fuera de un procedimiento o función.

creo yo que si, en la parte script de la base de datos donde cree las tablas e hice las inserciones de los datos, es decir me logueo con el nombre de la base de datos y su contraseña, he probado ejecutarlo con execute, otro con begin exec ProAgenda(1000); commit end; y ninguno de estos me dio resultado. no se que puede estar mal, las 2 primeras tablas las cree en el "Get Started With Oracle Database 11g Express Edition", y el resto de la base de datos en oracle sql developer, en ambas me salen todo lo que cree

si necesita mas datos no dude en preguntarme

Usando una herramienta plsql, para ejecutar el procedimiento use así:

Begin

ProAgenda(1000);

commit;

end;

En plsql para ejecutar procedimientos, paquetes o funciones, no es necesario usar el comando exec, los puede llamar directamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas