CREATE PROCEDURE

Function

CREATE PROCEDURE creates a stored procedure.

Precautions

Syntax

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
CREATE [ OR REPLACE ] PROCEDURE procedure_name
    [ ( {[ argmode ] [ argname ] argtype [ { DEFAULT | := | = } expression ]}[,...]) ]
    [
       { IMMUTABLE | STABLE | VOLATILE }
       | { SHIPPABLE | NOT SHIPPABLE }
       | {PACKAGE}
       | [ NOT ] LEAKPROOF
       | { CALLED ON NULL INPUT | RETURNS NULL ON NULL INPUT | STRICT }
       | {[ EXTERNAL ] SECURITY INVOKER | [ EXTERNAL ] SECURITY DEFINER | AUTHID DEFINER | AUTHID CURRENT_USER}
       | COST execution_cost
       | ROWS result_rows
       | SET configuration_parameter { [ TO | = ] value | FROM CURRENT }
    ][ ... ]
 { IS | AS } 
plsql_body 
/

Parameter Description

No specific order is applied to argument_name and argmode. The following order is advised: argument_name, argmode, and argument_type.

Examples

Create a stored procedure:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
CREATE OR REPLACE PROCEDURE prc_add
(
    param1    IN   INTEGER,
    param2    IN OUT  INTEGER
)
AS
BEGIN
   param2:= param1 + param2;
   dbms_output.put_line('result is: '||to_char(param2));
END;
/

Call the stored procedure:

1
SELECT prc_add(2,3);

Create a stored procedure whose parameter type is VARIADIC:

1
2
3
4
5
6
CREATE OR REPLACE PROCEDURE pro_variadic (param1 VARIADIC int4[], param2  OUT  TEXT)
AS
BEGIN
    param2:= param1::text;
END;
/

Execute the stored procedure:

1
SELECT pro_variadic(VARIADIC param1=> array[1,2,3,4]);

Create a stored procedure with the package attribute:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
CREATE OR REPLACE PROCEDURE package_func_overload(col int, col2 out varchar)
package
as
declare
    col_type text;
begin
     col2 := '122';
         dbms_output.put_line('two varchar parameters ' || col2);
end;
/

Helpful Links

DROP PROCEDURE, CALL