Oracle:存储过程的可变参数数量
发布时间:2020-12-12 13:01:41 所属栏目:百科 来源:网络整理
导读:我想使用存储过程将各种用户插入到Oracle数据库中.用户(表“用户”)具有姓名,姓氏和出生日期: CREATE TABLE "USER" ( "Name" VARCHAR2(50),"Surname" VARCHAR2(50),"Dt_Birth" DATE,) 创建用户的存储过程非常简单: CREATE PROCEDURE Insert_User(p_user,p_
我想使用存储过程将各种用户插入到Oracle数据库中.用户(表“用户”)具有姓名,姓氏和出生日期:
CREATE TABLE "USER" ( "Name" VARCHAR2(50),"Surname" VARCHAR2(50),"Dt_Birth" DATE,) 创建用户的存储过程非常简单: CREATE PROCEDURE Insert_User(p_user,p_surname,p_dt_birth) BEGIN INSERT INTO User(Name,Surname,Dt_Birth) VALUES(p_user,p_dt_birth); END; 如果我想创建存储过程以插入变量(1或2或3等)用户数,该怎么办?谢谢 另请注意,上面的代码仅用于示例,因此可能存在随机错误位 解决方法您可以使用一组记录同时插入多个用户.考虑: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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- The supplied data appears to be in the Office 2007+ XML
- oracle用户管理
- Professional Wikis (Programmer to Programmer) (Paperbac
- VC 中的ATL和 MFC有什么区别
- 如何在Xcode中找到适用于iOS应用程序的APP_UUID?
- actionscript-3 – Flex AIR – IntelliJ中的application.x
- 前端开发碎碎念
- c# – 使用Entity Framework创建临时表
- dwr进行页面推送简单实例
- layout – 我什么时候必须调用以编程方式实例化的小部件的s