PL/SQL es un lenguaje para escribir programas autónomos. No está diseñado para la interactividad del usuario. Los valores de entrada se pasan como parámetros. Entonces, su programa debería verse así
CREATE OR REPLACE PROCEDURE hello
( p1 in number
, p2 in varchar2 )
AS
l_salutation varchar2(20) := 'Hello World';
BEGIN
DBMS_OUTPUT.PUT_LINE(l_salutation);
DBMS_OUTPUT.PUT_LINE('p1 = ' || p1);
DBMS_OUTPUT.PUT_LINE('p2 = ' || p2);
END;
/
Tenga en cuenta que no es necesario DECLARAR con un Procedimiento con nombre. La sección entre AS y BEGIN es para declarar variables, como lo he hecho con l_salutation
.
Puede proporcionar valores para esos parámetros al invocar el programa. En SQL*Plus funcionaría así:
SET SERVEROUTPUT ON
accept p1 prompt "please enter 1 or 0: "
accept p2 prompt "please enter Y or N: "
exec HELLO (&p1, '&p2')