2009-12-06 37 views
35

Estoy usando Oracle Express 10g express edition. Tiene una interfaz de usuario agradable para desarrolladores de db. Pero estoy enfrentando algunos problemas al ejecutar procedimientos almacenados.¿Cómo ejecutar un procedimiento almacenado de Oracle?

Procedimiento:

create or replace procedure temp_proc is 
begin 
    DBMS_OUTPUT.PUT_LINE('Test'); 
end 

se ha creado correctamente. Pero cuando ejecuto:

execute temp_proc;

muestra ORA-00900: instrucción SQL no válida

Así ayuda necesaria aquí

+1

Eso es válido para SQLPlus - ¿Cómo está usted tratando de ejecutarlo? –

+0

Primero aparece "Ir a la página de inicio de la base de datos", luego Inicio> SQL> Comandos SQL. Luego crea el procedimiento, luego ejecuta. – FlintOff

+0

¿Qué software estás usando? –

Respuesta

51

Execute es SQL * más sintaxis .. trate de envolver su llamada en comenzar .. terminar así:

begin 
    temp_proc; 
end; 

(Aunque Jeffrey dice que esto no funciona en APEX .. pero que está tratando de haz que esto se ejecute en SQLDeveloper ... prueba el menú 'Ejecutar' allí).

+2

Esto funciona totalmente en APEX. Acabo de comprobar. – InamTaj

-1

Ha intentado corregir la sintaxis como esto ?:

create or replace procedure temp_proc AS 
begin 
    DBMS_OUTPUT.PUT_LINE('Test'); 
end; 
+4

'IS' debería ser correcto. – Thorsten

+1

Lo que veo es que acaba de cambiar IS por AS y agrega un punto y coma al final de la palabra clave 'end'. Aunque la adición de punto y coma está bien, pero OP dice que la compilación fue exitosa, por lo que no puede ser el problema. El problema es que OP no tenía conocimiento de cómo ejecutar el proceso que ya se ha abordado correctamente en la respuesta aceptada. Entonces esta respuesta es incorrecta. – nanosoft

3

Oracle 10g Express Edition se entrega con Oracle Application Express (Apex) incorporado. Está ejecutando esto en su ventana Comandos SQL, que no es compatible con la sintaxis de SQL * Plus.

Eso no importa, porque (como habrás descubierto) la sintaxis BEGIN ... END funciona en Apex.

2

Ambos 'es' y 'como' son sintaxis válida. La salida es deshabilitada de forma predeterminada. Pruebe con un procedimiento que también permite la salida ...

create or replace procedure temp_proc is 
begin 
    DBMS_OUTPUT.ENABLE(1000000); 
    DBMS_OUTPUT.PUT_LINE('Test'); 
end; 

... y lo llaman en un bloque PLSQL ...

begin 
    temp_proc; 
end; 

... como SQL es no procedimental.

0
begin 
    temp_proc; 
end; 

Quiero recordarle que "temp_proc" debe ser sinónimo ...

Cuestiones relacionadas