Oracle PL/SQL/Stored Procedure Function/Procedure Parameters
Содержание
- 1 create and pass in three parms
- 2 create default values
- 3 Default Parameter Values
- 4 Different ways of calling a procedure with default parameters.
- 5 First 2 parameters passed by position, the second 2 are passed by name
- 6 Legal and illegal formal parameters which are constrained by length.
- 7 NOCOPY modifier.
- 8 Number type parameter
- 9 ParameterLength using %TYPE for the parameters(Calling ParameterLength illegally (ORA-6502))
- 10 Passing parameter by parameter name
- 11 Pass null to procedure
- 12 positional and named notation for procedure calls.
- 13 Positional vs. named parameter passing.
- 14 Procedure with colunm type as parameter type
- 15 Procedure with four parameters
- 16 Store procedure with three parameters
- 17 Use column type to control parameter type
- 18 Use concatenation to wrap string passed in
- 19 User-defined collection type parameter
- 20 Use SYS_REFCURSOR as parameter type
- 21 Wrong way to reference parameters
create and pass in three parms
SQL>
SQL> create or replace
2 procedure three_parms(
3 p_p1 number,
4 p_p2 number,
5 p_p3 number ) as
6 begin
7 dbms_output.put_line( "p_p1 = " || p_p1 );
8 dbms_output.put_line( "p_p2 = " || p_p2 );
9 dbms_output.put_line( "p_p3 = " || p_p3 );
10 end three_parms;
11 /
Procedure created.
SQL>
SQL> set serverout on
SQL>
SQL> exec three_parms( p_p1 => 12, p_p3 => 3, p_p2 => 68 );
p_p1 = 12
p_p2 = 68
p_p3 = 3
PL/SQL procedure successfully completed.
SQL>
SQL>
create default values
SQL>
SQL>
SQL> create or replace
2 procedure default_values(
3 p_parm1 varchar2,
4 p_parm2 varchar2 default "default 1",
5 p_parm3 varchar2 default "default 2" ) as
6 begin
7 dbms_output.put_line( p_parm1 );
8 dbms_output.put_line( p_parm2 );
9 dbms_output.put_line( p_parm3 );
10 end default_values;
11 /
Procedure created.
SQL>
SQL> exec default_values( "Tom", p_parm3 => "Joel" );
Tom
default 1
Joel
PL/SQL procedure successfully completed.
SQL>
SQL> exec default_values( p_parm4 => "Tom" );
BEGIN default_values( p_parm4 => "Tom" ); END;
*
ERROR at line 1:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to "DEFAULT_VALUES"
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Default Parameter Values
SQL>
SQL>
SQL> CREATE TABLE Instructor (
2 InstructorID INT NOT NULL PRIMARY KEY,
3 Name VARCHAR(50) NOT NULL);
Table created.
SQL> INSERT INTO Instructor (InstructorID,Name) VALUES (1,"Victor");
1 row created.
SQL> INSERT INTO Instructor (InstructorID,Name) VALUES (2,"Bill");
1 row created.
SQL> INSERT INTO Instructor (InstructorID,Name) VALUES (3,"Mary");
1 row created.
SQL> INSERT INTO Instructor (InstructorID,Name) VALUES (4,"Jack");
1 row created.
SQL> INSERT INTO Instructor (InstructorID,Name) VALUES (5,"Peter");
1 row created.
SQL> INSERT INTO Instructor (InstructorID,Name) VALUES (6,"Tom");
1 row created.
SQL>
SQL> CREATE OR REPLACE PROCEDURE InsertInstructor (i_ProfID IN INT,
2 i_ProfName IN VARCHAR DEFAULT "Prof. A.N. Other")
3 AS
4 BEGIN
5 INSERT INTO Instructor (InstructorID, Name)
6 VALUES (i_ProfID, i_ProfName);
7 END;
8 /
Procedure created.
SQL>
SQL>
SQL> drop table Instructor;
Table dropped.
Different ways of calling a procedure with default parameters.
SQL>
SQL> set serveroutput on
SQL>
SQL> CREATE OR REPLACE PROCEDURE DefaultTest (
2 p_ParameterA NUMBER DEFAULT 10,
3 p_ParameterB VARCHAR2 DEFAULT "abcdef",
4 p_ParameterC DATE DEFAULT SYSDATE) AS
5 BEGIN
6 DBMS_OUTPUT.PUT_LINE(
7 "A: " || p_ParameterA ||
8 " B: " || p_ParameterB ||
9 " C: " || TO_CHAR(p_ParameterC, "DD-MON-YYYY"));
10 END DefaultTest;
11 /
Procedure created.
SQL> show errors
No errors.
SQL>
SQL> BEGIN
2 DefaultTest(p_ParameterA => 7, p_ParameterC => "30-DEC-95");
3 END;
4 /
END;
*
ERROR at line 3:
ORA-01843: not a valid month
ORA-06512: at line 2
SQL>
SQL> BEGIN
2 DefaultTest(7);
3 END;
4 /
A: 7 B: abcdef C: 19-JUN-2008
PL/SQL procedure successfully completed.
SQL>
SQL>
First 2 parameters passed by position, the second 2 are passed by name
SQL>
SQL> CREATE OR REPLACE PROCEDURE CallMe(
2 p_ParameterA VARCHAR2,
3 p_ParameterB NUMBER,
4 p_ParameterC BOOLEAN,
5 p_ParameterD DATE) AS
6 BEGIN
7 NULL;
8 END CallMe;
9 /
Procedure created.
SQL>
SQL>
SQL> DECLARE
2 v_Variable1 VARCHAR2(10);
3 v_Variable2 NUMBER(7,6);
4 v_Variable3 BOOLEAN;
5 v_Variable4 DATE;
6 BEGIN
7 CallMe(v_Variable1, v_Variable2,
8 p_ParameterC => v_Variable3,
9 p_ParameterD => v_Variable4);
10 END;
11 /
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL>
Legal and illegal formal parameters which are constrained by length.
SQL>
SQL>
SQL>
SQL> SET echo on
SQL>
SQL> CREATE OR REPLACE PROCEDURE ParameterLength (
2 p_Parameter1 IN OUT VARCHAR2(10),
3 p_Parameter2 IN OUT NUMBER(3,1)) AS
4 BEGIN
5 p_Parameter1 := "abcdefghijklm";
6 p_Parameter2 := 12.3;
7 END ParameterLength;
8 /
Warning: Procedure created with compilation errors.
SQL> SHOW ERRORS
Errors for PROCEDURE PARAMETERLENGTH:
LINE/COL ERROR
-------- -----------------------------------------------------------------
2/31 PLS-00103: Encountered the symbol "(" when expecting one of the
following:
:= . ) , @ % default character
The symbol ":=" was substituted for "(" to continue.
3/29 PLS-00103: Encountered the symbol "(" when expecting one of the
following:
:= . ) , @ % default character
The symbol ":=" was substituted for "(" to continue.
SQL>
SQL> DECLARE
2 v_Variable1 VARCHAR2(40);
3 v_Variable2 NUMBER(7,3);
4 BEGIN
5 ParameterLength(v_Variable1, v_Variable2);
6 END;
7 /
ParameterLength(v_Variable1, v_Variable2);
*
ERROR at line 5:
ORA-06550: line 5, column 3:
PLS-00905: object sqle.PARAMETERLENGTH is invalid
ORA-06550: line 5, column 3:
PL/SQL: Statement ignored
SQL>
SQL>
NOCOPY modifier.
SQL>
SQL> CREATE OR REPLACE PROCEDURE NoCopyTest (
2 p_InParameter IN NUMBER,
3 p_OutParameter OUT NOCOPY VARCHAR2,
4 p_InOutParameter IN OUT NOCOPY CHAR) IS
5 BEGIN
6 NULL;
7 END NoCopyTest;
8 /
Procedure created.
SQL>
SQL>
Number type parameter
SQL>
SQL> create table numbers(
2 n number,
3 username varchar2(30) )
4 /
Table created.
SQL>
SQL>
SQL> create or replace
2 procedure insert_numbers( p_num number ) authid definer as
3 begin
4 insert into numbers values ( p_num, user );
5 end insert_numbers;
6 /
Procedure created.
SQL>
SQL> EXEC insert_numbers(1);
PL/SQL procedure successfully completed.
SQL>
SQL> select * from numbers;
N USERNAME
---------- ------------------------------
1 SYS
SQL>
SQL> drop table numbers;
Table dropped.
SQL>
ParameterLength using %TYPE for the parameters(Calling ParameterLength illegally (ORA-6502))
SQL>
SQL>
SQL> CREATE TABLE lecturer (
2 id NUMBER(5) PRIMARY KEY,
3 first_name VARCHAR2(20),
4 last_name VARCHAR2(20),
5 major VARCHAR2(30),
6 current_credits NUMBER(3)
7 );
Table created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10001, "Scott", "Lawson","Computer Science", 11);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major, current_credits)
2 VALUES (10002, "Mar", "Wells","History", 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10003, "Jone", "Bliss","Computer Science", 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10004, "Man", "Kyte","Economics", 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10005, "Pat", "Poll","History", 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10006, "Tim", "Viper","History", 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10007, "Barbara", "Blues","Economics", 7);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10008, "David", "Large","Music", 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10009, "Chris", "Elegant","Nutrition", 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10010, "Rose", "Bond","Music", 7);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10011, "Rita", "Johnson","Nutrition", 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10012, "Sharon", "Clear","Computer Science", 3);
1 row created.
SQL>
SQL> SET echo on
SQL>
SQL> CREATE OR REPLACE PROCEDURE ParameterLength (
2 p_Parameter1 IN OUT VARCHAR2,
3 p_Parameter2 IN OUT lecturer.current_credits%TYPE) AS
4 BEGIN
5 p_Parameter2 := 12345;
6 END ParameterLength;
7 /
Procedure created.
SQL>
SQL> DECLARE
2 v_Variable1 VARCHAR2(1);
3 v_Variable2 NUMBER;
4 BEGIN
5 ParameterLength(v_Variable1, v_Variable2);
6 END;
7 /
DECLARE
*
ERROR at line 1:
ORA-06502: PL/SQL: numeric or value error: number precision too large
ORA-06512: at "sqle.PARAMETERLENGTH", line 5
ORA-06512: at line 5
SQL>
SQL> drop table lecturer;
Table dropped.
SQL>
Passing parameter by parameter name
SQL>
SQL> CREATE OR REPLACE PROCEDURE CallMe(
2 p_ParameterA VARCHAR2,
3 p_ParameterB NUMBER,
4 p_ParameterC BOOLEAN,
5 p_ParameterD DATE) AS
6 BEGIN
7 NULL;
8 END CallMe;
9 /
Procedure created.
SQL>
SQL> DECLARE
2 v_Variable1 VARCHAR2(10);
3 v_Variable2 NUMBER(7,6);
4 v_Variable3 BOOLEAN;
5 v_Variable4 DATE;
6 BEGIN
7 CallMe(p_ParameterA => v_Variable1,
8 p_ParameterB => v_Variable2,
9 p_ParameterC => v_Variable3,
10 p_ParameterD => v_Variable4);
11 END;
12 /
PL/SQL procedure successfully completed.
SQL>
Pass null to procedure
SQL>
SQL> set serveroutput on
SQL>
SQL> CREATE OR REPLACE PROCEDURE CallProc1(p1 IN VARCHAR2 := NULL) AS
2 BEGIN
3 DBMS_OUTPUT.PUT_LINE("CallProc1 called with " || p1);
4 END CallProc1;
5 /
Procedure created.
SQL>
SQL>
SQL> CALL CallProc1("Hello!");
CallProc1 called with Hello!
Call completed.
SQL> CALL CallProc1();
CallProc1 called with
Call completed.
positional and named notation for procedure calls.
SQL>
SQL> CREATE OR REPLACE PROCEDURE CallMe(
2 p_ParameterA VARCHAR2,
3 p_ParameterB NUMBER,
4 p_ParameterC BOOLEAN,
5 p_ParameterD DATE) AS
6 BEGIN
7 NULL;
8 END CallMe;
9 /
Procedure created.
SQL>
SQL> DECLARE
2 v_Variable1 VARCHAR2(10);
3 v_Variable2 NUMBER(7,6);
4 v_Variable3 BOOLEAN;
5 v_Variable4 DATE;
6 BEGIN
7 CallMe(v_Variable1, v_Variable2, v_Variable3, v_Variable4);
8 END;
9 /
PL/SQL procedure successfully completed.
SQL>
SQL>
Positional vs. named parameter passing.
SQL> CREATE OR REPLACE PROCEDURE CallMe(pA VARCHAR2,pB NUMBER,pC BOOLEAN,pD DATE) AS
2 BEGIN
3 NULL;
4 END CallMe;
5 /
SP2-0804: Procedure created with compilation warnings
SQL>
SQL>
SQL> -- This call uses positional notation
SQL> DECLARE
2 v1 VARCHAR2(10);
3 v2 NUMBER(7,6);
4 v3 BOOLEAN;
5 v4 DATE;
6 BEGIN
7 CallMe(v1, v2, v3, v4);
8 END;
9 /
PL/SQL procedure successfully completed.
SQL>
Procedure with colunm type as parameter type
SQL>
SQL> CREATE TABLE lecturer (
2 id NUMBER(5) PRIMARY KEY,
3 first_name VARCHAR2(20),
4 last_name VARCHAR2(20),
5 major VARCHAR2(30),
6 current_credits NUMBER(3)
7 );
Table created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10001, "Scott", "Lawson","Computer Science", 11);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major, current_credits)
2 VALUES (10002, "Mar", "Wells","History", 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10003, "Jone", "Bliss","Computer Science", 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10004, "Man", "Kyte","Economics", 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10005, "Pat", "Poll","History", 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10006, "Tim", "Viper","History", 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10007, "Barbara", "Blues","Economics", 7);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10008, "David", "Large","Music", 4);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10009, "Chris", "Elegant","Nutrition", 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10010, "Rose", "Bond","Music", 7);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10011, "Rita", "Johnson","Nutrition", 8);
1 row created.
SQL>
SQL> INSERT INTO lecturer (id, first_name, last_name, major,current_credits)
2 VALUES (10012, "Sharon", "Clear","Computer Science", 3);
1 row created.
SQL>
SQL> set serveroutput on
SQL>
SQL> CREATE OR REPLACE PROCEDURE printLecturer(p_Major IN lecturer.major%TYPE) AS
2 CURSOR c_lecturer IS
3 SELECT first_name, last_name FROM lecturer WHERE major = p_Major;
4 BEGIN
5 FOR v_StudentRec IN c_lecturer LOOP
6 DBMS_OUTPUT.PUT_LINE(v_StudentRec.first_name || " " ||v_StudentRec.last_name);
7 END LOOP;
8 END;
9 /
Procedure created.
SQL>
SQL> BEGIN
2 printLecturer("Computer Science");
3 END;
4 /
Scott Lawson
Jone Bliss
Sharon Clear
PL/SQL procedure successfully completed.
SQL>
SQL> drop table lecturer;
Table dropped.
Procedure with four parameters
SQL>
SQL> CREATE OR REPLACE PROCEDURE CallMe(
2 p_ParameterA VARCHAR2,
3 p_ParameterB NUMBER,
4 p_ParameterC BOOLEAN,
5 p_ParameterD DATE) AS
6 BEGIN
7 NULL;
8 END CallMe;
9 /
Procedure created.
SQL>
SQL>
SQL> DECLARE
2 v_Variable1 VARCHAR2(10);
3 v_Variable2 NUMBER(7,6);
4 v_Variable3 BOOLEAN;
5 v_Variable4 DATE;
6 BEGIN
7 CallMe(p_ParameterB => v_Variable2,
8 p_ParameterC => v_Variable3,
9 p_ParameterD => v_Variable4,
10 p_ParameterA => v_Variable1);
11 END;
12 /
PL/SQL procedure successfully completed.
SQL>
Store procedure with three parameters
SQL> -- store procedure with three parameters
SQL>
SQL>
SQL> create or replace
2 procedure three_parms(
3 p_p1 number,
4 p_p2 number,
5 p_p3 number ) as
6 begin
7 dbms_output.put_line( "p_p1 = " || p_p1 );
8 dbms_output.put_line( "p_p2 = " || p_p2 );
9 dbms_output.put_line( "p_p3 = " || p_p3 );
10 end three_parms;
11 /
Procedure created.
SQL>
SQL> set serverout on
SQL>
SQL> exec three_parms( p_p1 => 12, p_p3 => 3, p_p2 => 68 );
p_p1 = 12
p_p2 = 68
p_p3 = 3
PL/SQL procedure successfully completed.
SQL>
Use column type to control parameter type
SQL> CREATE TABLE books (
2 isbn CHAR(10) PRIMARY KEY,
3 category VARCHAR2(20),
4 title VARCHAR2(100),
5 num_pages NUMBER,
6 price NUMBER,
7 copyright NUMBER(4),
8 emp1 NUMBER,
9 emp2 NUMBER,
10 emp3 NUMBER
11 );
Table created.
SQL>
SQL>
SQL>
SQL>
SQL> CREATE OR REPLACE PROCEDURE ParameterLength (p1 IN OUT VARCHAR2,p2 IN OUT books.copyright%TYPE) AS
2 BEGIN
3 p2 :=345;
4 END ParameterLength;
5 /
Procedure created.
SQL>
SQL>
SQL> show errors
No errors.
SQL>
SQL>
SQL> DECLARE
2 v1 VARCHAR2(1);
3 v2 NUMBER;
4 BEGIN
5 ParameterLength(v1, v2);
6 END;
7 /
PL/SQL procedure successfully completed.
SQL>
SQL>
SQL>
SQL>
SQL>
SQL> drop table books;
Table dropped.
SQL>
SQL>
SQL>
SQL>
Use concatenation to wrap string passed in
SQL> CREATE OR REPLACE PROCEDURE format_string( string_in IN OUT VARCHAR2 ) IS
2 BEGIN
3 string_in := "["||string_in||"]";
4 END;
5 /
Procedure created.
SQL>
User-defined collection type parameter
SQL> create or replace type rec is object
2 ( a number,
3 b number,
4 c varchar2(30));
5 /
SQL>
SQL> create or replace type rec_list is table of rec;
2 /
Type created.
SQL>
SQL> create or replace procedure myProcedure(p Rec_list) is
2 x number;
3 begin
4 null;
5 end;
6 /
Procedure created.
SQL>
SQL>
SQL>
Use SYS_REFCURSOR as parameter type
SQL>
SQL>
SQL> CREATE TABLE orders( order_number NUMBER,
2 create_date DATE,
3 assign_date DATE,
4 close_date DATE);
SQL>
SQL> BEGIN
2 FOR counter IN 1..3 LOOP
3 INSERT INTO orders
4 VALUES(counter,
5 SYSDATE,
6 SYSDATE + 1,
7 SYSDATE + 2);
8 END LOOP;
9 END;
10 /
PL/SQL procedure successfully completed.
SQL>
SQL> CREATE OR REPLACE TYPE order_date_o AS OBJECT ( order_number NUMBER,
2 date_type VARCHAR2(1),
3 year NUMBER,
4 quarter NUMBER,
5 month NUMBER );
6 /
SQL> CREATE TYPE order_date_t AS TABLE OF order_date_o;
2 /
SQL>
SQL> CREATE OR REPLACE FUNCTION date_parse ( p_curs SYS_REFCURSOR )
2 RETURN order_date_t AS
3 v_order_rec orders%ROWTYPE;
4 v_ret_val order_date_t := order_date_t( );
5
6 BEGIN
7 LOOP
8
9 FETCH p_curs INTO v_order_rec;
10 EXIT WHEN p_curs%NOTFOUND;
11 v_ret_val.EXTEND(3);
12 v_ret_val(v_ret_val.LAST - 2) := order_date_o(v_order_rec.order_number,"O",
13 TO_CHAR(v_order_rec.create_date,"YYYY"),
14 TO_CHAR(v_order_rec.create_date,"Q"),
15 TO_CHAR(v_order_rec.create_date,"MM"));
16 v_ret_val(v_ret_val.LAST - 1) := order_date_o(v_order_rec.order_number,"A",
17 TO_CHAR(v_order_rec.assign_date,"YYYY"),
18 TO_CHAR(v_order_rec.assign_date,"Q"),
19 TO_CHAR(v_order_rec.assign_date,"MM"));
20 v_ret_val(v_ret_val.LAST) := order_date_o(v_order_rec.order_number,"C",
21 TO_CHAR(v_order_rec.close_date,"YYYY"),
22 TO_CHAR(v_order_rec.close_date,"Q"),
23 TO_CHAR(v_order_rec.close_date,"MM"));
24 END LOOP;
25
26 RETURN(v_ret_val);
27
28 END;
29 /
Function created.
SQL>
SQL> SELECT *
2 FROM TABLE(date_PARSE(CURSOR(SELECT * FROM orders)))
3 /
ORDER_NUMBER D YEAR QUARTER MONTH
------------ - ---------- ---------- ----------
1 O 2008 2 6
1 A 2008 2 6
1 C 2008 2 6
2 O 2008 2 6
2 A 2008 2 6
2 C 2008 2 6
3 O 2008 2 6
3 A 2008 2 6
3 C 2008 2 6
1 O 2008 2 6
1 A 2008 2 6
1 C 2008 2 6
2 O 2008 2 6
2 A 2008 2 6
2 C 2008 2 6
3 O 2008 2 6
3 A 2008 2 6
3 C 2008 2 6
18 rows selected.
SQL>
SQL>
Wrong way to reference parameters
SQL>
SQL>
SQL> create table t(
2 n number,
3 parm varchar2(20)
4 )
5 /
Table created.
SQL>
SQL> create or replace
2 procedure insert_into_t(
3 p_parm1 in number,
4 p_parm2 in number ) is
5 begin
6 insert into t values ( p_parm1, "p_parm1" );
7 insert into t values ( p_parm2, "p_parm2" );
8 end insert_into_t;
9 /
Procedure created.
SQL>
SQL> begin
2 insert_into_t(1,2);
3 end;
4 /
PL/SQL procedure successfully completed.
SQL>
SQL> select * from t;
N PARM
---------- --------------------
1 p_parm1
2 p_parm2
SQL>
SQL> drop table t;
Table dropped.