oracle存储过程不定参数传递,Oracle:存储过程的可变参数数量

您可以使用一组记录在同一时间插入多个用户。试想一下:

SQL> CREATE TABLE "USER" (

2 "Name" VARCHAR2(50),

3 "Surname" VARCHAR2(50),

4 "Dt_Birth" DATE

5 );

Table created

SQL> CREATE OR REPLACE PACKAGE user_pkg IS

2

3 TYPE user_rec IS RECORD (

4 name VARCHAR2(50),

5 surname VARCHAR2(50),

6 dt_birth DATE

7 );

8 TYPE user_tab IS TABLE OF user_rec INDEX BY BINARY_INTEGER;

9

10 PROCEDURE insert_user(p_user user_tab);

11

12 END user_pkg;

13/

Package created

在这里,我定义两种数据类型:一类RECORD将包含数据,一个用户和INDEX BY TABLE将包含多条记录。现在,过程本身:

SQL> CREATE OR REPLACE PACKAGE BODY user_pkg IS

2

3 PROCEDURE insert_user(p_user user_tab) IS

4 BEGIN

5 FOR i IN 1..p_user.count LOOP

6 INSERT INTO "USER"("Name", "Surname", "Dt_Birth")

7 VALUES (p_user(i).name,

8 p_user(i).surname,

9 p_user(i).dt_birth);

10 END LOOP;

11 END insert_user;

12

13 END user_pkg;

14/

Package body created

你可以这样调用这样的过程:

SQL> DECLARE

2 l_user_tab user_pkg.user_tab;

3 BEGIN

4 SELECT owner, object_name, created

5 BULK COLLECT INTO l_user_tab

6 FROM all_objects

7 WHERE ROWNUM <= 3;

8 user_pkg.insert_user(l_user_tab);

9 END;

10/

SQL> SELECT * FROM "USER";

Name Surname Dt_Birth

------- -------- -----------

SYS IND$ 12/05/2000

SYS ICOL$ 12/05/2000

SYS OBJ$ 12/05/2000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值