Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4005981
  • 博文数量: 536
  • 博客积分: 10470
  • 博客等级: 上将
  • 技术积分: 4825
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-26 14:08
文章分类

全部博文(536)

文章存档

2024年(3)

2021年(1)

2019年(1)

2017年(1)

2016年(2)

2013年(2)

2012年(10)

2011年(43)

2010年(10)

2009年(17)

2008年(121)

2007年(252)

2006年(73)

分类: Oracle

2007-02-08 17:38:57

看一个建PACKAGE BODY的语句:
CREATE OR REPLACE PACKAGE BODY OSM_DML_3SP.OSM_TAB_PACKPACK7 AS
  gpck NUMBER;
  PROCEDURE OSM_TAB_PACKPROCTT(f IN OUT NUMBER) AS
  BEGIN
    SELECT COUNT(*) INTO f FROM OSM_DML_3SP.OSM_TAB_PACK;
    IF f < 8039 THEN
      INSERT INTO OSM_DML_3SP.OSM_TAB_PACK SELECT * FROM OSM_DML_3SP.OSM_TAB_PACK;
    END IF;
  END OSM_TAB_PACKPROCTT;
BEGIN -- 为初使化部分
  INSERT INTO OSM_DML_3SP.OSM_TAB_PACK(COL_0, COL_5) VALUES(12140, SYSTIMESTAMP);
  gpck := 6048;
END OSM_TAB_PACKPACK7;

1>>> 感觉设计的很麻烦BEGIN ... END为什么不成对出现.
如:
CREATE PACKAGE package-name AS
  -- add PL/SQL
END;    
为什么不设计成:
CREATE PACKAGE package-name AS
BEGIN
  -- add PL/SQL
END;    
感觉很是麻烦啊!

上面的感觉这样比较好:
CREATE OR REPLACE PACKAGE BODY OSM_DML_3SP.OSM_TAB_PACKPACK7 AS
  INSERT INTO OSM_DML_3SP.OSM_TAB_PACK(COL_0, COL_5) VALUES(12140, SYSTIMESTAMP); -- 为初使化部分
  gpck := 6048;
BEGIN
  gpck NUMBER;
  PROCEDURE OSM_TAB_PACKPROCTT(f IN OUT NUMBER) AS
  BEGIN
    SELECT COUNT(*) INTO f FROM OSM_DML_3SP.OSM_TAB_PACK;
    IF f < 8039 THEN
      INSERT INTO OSM_DML_3SP.OSM_TAB_PACK SELECT * FROM OSM_DML_3SP.OSM_TAB_PACK;
    END IF;
  END OSM_TAB_PACKPROCTT;
END OSM_TAB_PACKPACK7;

2>>> AS 与 IS 不知道什么时候用
create function / procedure / package 中AS与IS可以混和用, 但为什么CURSOR中却只可以用IS
CURSOR c1 IS SELECT COL_0 FROM aa;
感觉很是奇怪.

不知道设计PL/SQL人的怎么想的!!!
阅读(1523) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~