搜索
查看: 1352|: 0

【Oracle】存储过程_存储过程简单实例

[复制链接]

202

主题

6

回帖

885

积分

高级会员

积分
885
发表于 2014-11-18 15:12:02 | 显示全部楼层 |阅读模式
例子业务功能:

1.根据传入的类型A_TYPE联合查询PROCEDURE_TEST_A表、PROCEDURE_TEST_A_SUB表中的数据,并显示主要内容。

2.根据传入的类型A_TYPE联合查询PROCEDURE_TEST_A表、PROCEDURE_TEST_A_SUB表,并将结果插入PROCEDURE_TEST_B表中。

这里若B_EMAIL字段为空则取传入的默认值。

3.若PROCEDURE_TEST_B表进行了插入操作,则分组统计ASUB_NUMBER字段更新或插入PROCEDURE_TEST_C表中。

里面包含了存储过程常用的大部分操作,包含循环、条件、增改查、参数传入、变量赋值等,话不多说直接上例子:

1.创建所需要的表,并初始化数据

创建4张表,其中3个表需要初始数据,代码如下:
  1. --数据来源表PROCEDURE_TEST_A
  2. CREATE TABLE PROCEDURE_TEST_A
  3. (
  4.   A_ID     VARCHAR2(255) NOT NULL,
  5.   A_USER   VARCHAR2(255),
  6.   A_EMAIL  VARCHAR2(255),
  7.   A_TYPE   VARCHAR2(5),
  8.   CONSTRAINT PROCEDURE_TEST_A PRIMARY KEY (A_ID)  
  9. );
  10. --数据来源表的子表PROCEDURE_TEST_A_SUB
  11. CREATE TABLE PROCEDURE_TEST_A_SUB
  12. (
  13.   ASUB_ID      VARCHAR2(255) NOT NULL,
  14.   ASUB_NAME    VARCHAR2(255),
  15.   ASUB_NUMBER  NUMBER(18,2),
  16.   ASUB_COMMENT VARCHAR2(2000),
  17.   A_ID         VARCHAR2(255),
  18.   CONSTRAINT PROCEDURE_TEST_A_SUB PRIMARY KEY (ASUB_ID),
  19.   CONSTRAINT PROCEDURE_TEST FOREIGN KEY (A_ID) REFERENCES PROCEDURE_TEST_A (A_ID)
  20. );
  21. --数据整合后插入表
  22. CREATE TABLE PROCEDURE_TEST_B
  23. (
  24.   B_ID       VARCHAR2(255) NOT NULL,
  25.   B_USER     VARCHAR2(255),
  26.   B_EMAIL    VARCHAR2(255),
  27.   B_NAME     VARCHAR2(255),
  28.   B_NUMBER   NUMBER(18,2),
  29.   B_COMMENT  VARCHAR2(2000),
  30.   CONSTRAINT PROCEDURE_TEST_B PRIMARY KEY (B_ID)  
  31. );
  32. --数据整合后更新表
  33. CREATE TABLE PROCEDURE_TEST_C
  34. (
  35.   C_USER    VARCHAR2(255) NOT NULL,
  36.   C_NUMBER   NUMBER(18,2),
  37.   CONSTRAINT PROCEDURE_TEST_C PRIMARY KEY (C_USER)  
  38. );
  39. --PROCEDURE_TEST_A初始化
  40. INSERT INTO PROCEDURE_TEST_A
  41.   (A_ID, A_USER, A_EMAIL, A_TYPE)
  42. VALUES
  43.   ('AID00006', 'system', '', 'T00');
  44. INSERT INTO PROCEDURE_TEST_A
  45.   (A_ID, A_USER, A_EMAIL, A_TYPE)
  46. VALUES
  47.   ('AID00001', 'popkidorc', 'popkidorc@mail.com', 'T01');
  48. INSERT INTO PROCEDURE_TEST_A
  49.   (A_ID, A_USER, A_EMAIL, A_TYPE)
  50. VALUES
  51.   ('AID00002', 'csdn', 'csdn@mail.com', 'T01');
  52. INSERT INTO PROCEDURE_TEST_A
  53.   (A_ID, A_USER, A_EMAIL, A_TYPE)
  54. VALUES
  55.   ('AID00003', 'pop', '', 'T01');
  56. INSERT INTO PROCEDURE_TEST_A
  57.   (A_ID, A_USER, A_EMAIL, A_TYPE)
  58. VALUES
  59.   ('AID00004', 'kid', 'kid@mail.com', 'T01');
  60. INSERT INTO PROCEDURE_TEST_A
  61.   (A_ID, A_USER, A_EMAIL, A_TYPE)
  62. VALUES
  63.   ('AID00005', 'orc', 'orc@mail.com', 'T01');
  64. --PROCEDURE_TEST_A_SUB初始化
  65. INSERT INTO PROCEDURE_TEST_A_SUB
  66.   (ASUB_ID, ASUB_NAME, ASUB_NUMBER, ASUB_COMMENT, A_ID)
  67. VALUES
  68.   ('ASUBID00001', 'oralce_blog', 9.90, 'oralce博客', 'AID00001');
  69. INSERT INTO PROCEDURE_TEST_A_SUB
  70.   (ASUB_ID, ASUB_NAME, ASUB_NUMBER, ASUB_COMMENT, A_ID)
  71. VALUES
  72.   ('ASUBID00002', 'sql_blog', 1.50, 'sql博客', 'AID00001');
  73. INSERT INTO PROCEDURE_TEST_A_SUB
  74.   (ASUB_ID, ASUB_NAME, ASUB_NUMBER, ASUB_COMMENT, A_ID)
  75. VALUES
  76.   ('ASUBID00003', 'swift_blog', 1.00, 'swift博客', 'AID00001');
  77. INSERT INTO PROCEDURE_TEST_A_SUB
  78.   (ASUB_ID, ASUB_NAME, ASUB_NUMBER, ASUB_COMMENT, A_ID)
  79. VALUES
  80.   ('ASUBID00004', 'game_blog', 6.00, 'game博客', 'AID00003');
  81. INSERT INTO PROCEDURE_TEST_A_SUB
  82.   (ASUB_ID, ASUB_NAME, ASUB_NUMBER, ASUB_COMMENT, A_ID)
  83. VALUES
  84.   ('ASUBID00005', 'sport_blog', 5.55, 'sport博客', 'AID00003');
  85. INSERT INTO PROCEDURE_TEST_A_SUB
  86.   (ASUB_ID, ASUB_NAME, ASUB_NUMBER, ASUB_COMMENT, A_ID)
  87. VALUES
  88.   ('ASUBID00006', 'kid_blog', 99.00, 'kid博客', 'AID00004');
  89. INSERT INTO PROCEDURE_TEST_A_SUB
  90.   (ASUB_ID, ASUB_NAME, ASUB_NUMBER, ASUB_COMMENT, A_ID)
  91. VALUES
  92.   ('ASUBID00007', 'zero_blog', 0.00, 'zero博客', 'AID00005');
  93. INSERT INTO PROCEDURE_TEST_A_SUB
  94.   (ASUB_ID, ASUB_NAME, ASUB_NUMBER, ASUB_COMMENT, A_ID)
  95. VALUES
  96.   ('ASUBID00008', 'large_blog', 100000.00, 'large博客', 'AID00005');
  97. --PROCEDURE_TEST_C初始化
  98. INSERT INTO PROCEDURE_TEST_C
  99.   (C_USER, C_NUMBER)
  100. VALUES
  101.   ('popkidorc', 9.90);
复制代码



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

大数据中国微信

QQ   

版权所有: Discuz! © 2001-2013 大数据.

GMT+8, 2024-11-15 21:50 , Processed in 0.073693 second(s), 24 queries .

快速回复 返回顶部 返回列表