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
<source lang="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> SQL>
</source>
create default values
<source lang="sql">
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
</source>
Default Parameter Values
<source lang="sql">
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.
</source>
Different ways of calling a procedure with default parameters.
<source lang="sql">
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>
</source>
First 2 parameters passed by position, the second 2 are passed by name
<source lang="sql">
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>
</source>
Legal and illegal formal parameters which are constrained by length.
<source lang="sql">
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>
</source>
NOCOPY modifier.
<source lang="sql">
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>
</source>
Number type parameter
<source lang="sql">
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>
</source>
ParameterLength using %TYPE for the parameters(Calling ParameterLength illegally (ORA-6502))
<source lang="sql">
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>
</source>
Passing parameter by parameter name
<source lang="sql">
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>
</source>
Pass null to procedure
<source lang="sql">
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.
</source>
positional and named notation for procedure calls.
<source lang="sql">
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>
</source>
Positional vs. named parameter passing.
<source lang="sql">
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>
</source>
Procedure with colunm type as parameter type
<source lang="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 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.
</source>
Procedure with four parameters
<source lang="sql">
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>
</source>
Store procedure with three parameters
<source lang="sql">
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>
</source>
Use column type to control parameter type
<source lang="sql">
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>
</source>
Use concatenation to wrap string passed in
<source lang="sql">
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>
</source>
User-defined collection type parameter
<source lang="sql">
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>
</source>
Use SYS_REFCURSOR as parameter type
<source lang="sql">
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>
</source>
Wrong way to reference parameters
<source lang="sql">
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.
</source>