Procedures (Cont.)


Following the arguments is the keyword AS (IS is a synonym). Then comes the body, which is essentially a PL/SQL block. We have repeated the name of the procedure after the END, but this is optional. However, the DECLARE section should not start with the keyword DECLARE. Rather, following AS we have:
   ... AS
   <local_var_declarations>
   BEGIN
       <procedure_body>
   END;
   /
The slash / at the end runs the statement that creates the procedure; it does not execute the procedure. To execute the procedure, use another PL/SQL statement, in which the procedure is invoked as an executable statement. For example:
   BEGIN  addtuple1( 99 );  END;
   /
Question: The following procedure also inserts a tuple into T2, but it takes both components as arguments. After creation, add a tuple (10, 'abc') to T2.

 SQL> CREATE PROCEDURE  addtuple2( x T2.a%type,  y T2.b%type )  AS
   2  BEGIN
   3    INSERT INTO  T2( a, b )  VALUES( x, y );
   4  END  addtuple2;
   5  /
 Procedure created.

 SQL> BEGIN  addtuple2( 10, 'abc' );  END;
   2  /
 PL/SQL procedure successfully completed.