oracle存储过程 序列 脚本 索引 主键

序列:

CREATE SEQUENCE SEQ_a
  START WITH 1
  MAXVALUE 999999999999999999999999999
  MINVALUE 1
  NOCYCLE
  NOCACHE
  NOORDER;

增删改查:

   PROCEDURE a_insert ( --a
  p_name    IN    VARCHAR2,   
 
  p_cur   OUT    aref,
    p_err_common_code   OUT      NUMBER,
       p_err_logic_code    OUT      NUMBER,
       p_err_code          OUT      NUMBER,
       p_err_msg           OUT      VARCHAR2
 );
 PROCEDURE a_update ( --a
  p_id    IN    NUMBER,  --主键值
  p_name    IN    VARCHAR2,   
    p_err_common_code   OUT      NUMBER,
       p_err_logic_code    OUT      NUMBER,
       p_err_code          OUT      NUMBER,
       p_err_msg           OUT      VARCHAR2
 );
 PROCEDURE a_getbyid ( --a
       
  p_id    IN     NUMBER ,--主键值
  p_cur    OUT     aref,
    p_err_common_code   OUT      NUMBER,
       p_err_logic_code    OUT      NUMBER,
       p_err_code          OUT      NUMBER,
       p_err_msg           OUT      VARCHAR2
 );
 PROCEDURE a_getbyname ( --a
       
  p_name    IN     VARCHAR2 ,  
  p_pagesize      IN        NUMBER,
        p_pageindex     IN        NUMBER,
  p_count      OUT       aref,                      --返回列表总个数
  p_cur      OUT      aref,        --记录集合
    p_err_common_code   OUT      NUMBER,
       p_err_logic_code    OUT      NUMBER,
       p_err_code          OUT      NUMBER,
       p_err_msg           OUT      VARCHAR2
 );
 PROCEDURE a_deletebyid ( --a
       
  p_id    IN   NUMBER ,
    p_err_common_code   OUT      NUMBER,
       p_err_logic_code    OUT      NUMBER,
       p_err_code          OUT      NUMBER,
       p_err_msg           OUT      VARCHAR2
 );


 
 
 PROCEDURE a_insert ( --a
  p_name    IN    VARCHAR2,   
  p_cur   OUT    aref,
    p_err_common_code   OUT      NUMBER,
       p_err_logic_code    OUT      NUMBER,
       p_err_code          OUT      NUMBER,
       p_err_msg           OUT      VARCHAR2
 )
 IS  
 t_id NUMBER;
 BEGIN
      --初值设置
   p_err_common_code := 0;
   p_err_logic_code := 0;
      p_err_code := 0;
      p_err_msg := '';
    
  SELECT SEQ_A.NEXTVAL
        INTO t_id
        FROM DUAL;
  
  INSERT INTO a
  (id , name )
  VALUES
  (t_id , p_name );
  --返回主健值
  OPEN p_cur FOR
   SELECT t_id FROM dual;  
 COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
   ROLLBACK;
         p_err_code := SQLCODE;
         p_err_msg := SQLERRM;   
  IF p_cur%ISOPEN THEN
   CLOSE p_cur;
  END IF;
   END  a_insert;


 PROCEDURE a_update ( --a
  p_id    IN    NUMBER,  
  p_name    IN    VARCHAR2,   
    p_err_common_code   OUT      NUMBER,
       p_err_logic_code    OUT      NUMBER,
       p_err_code          OUT      NUMBER,
       p_err_msg           OUT      VARCHAR2
 )
 IS  
 BEGIN
      --初值设置
   p_err_common_code := 0;
   p_err_logic_code := 0;
      p_err_code := 0;
      p_err_msg := '';
  
 UPDATE a SET
    name = nvl( p_name,name) 
  WHERE id = p_id;
 COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
   ROLLBACK;
         p_err_code := SQLCODE;
         p_err_msg := SQLERRM;   
   END  a_update;


 PROCEDURE a_getbyid ( --a
       
  p_id    IN     NUMBER ,
  p_cur    OUT     aref,
    p_err_common_code   OUT      NUMBER,
       p_err_logic_code    OUT      NUMBER,
       p_err_code          OUT      NUMBER,
       p_err_msg           OUT      VARCHAR2
 )
 IS
  
 BEGIN
      --初值设置
   p_err_common_code := 0;
   p_err_logic_code := 0;
      p_err_code := 0;
      p_err_msg := '';
   OPEN p_cur FOR
  SELECT * FROM a WHERE id = p_id;
 
   EXCEPTION
      WHEN OTHERS
      THEN
         p_err_code := SQLCODE;
         p_err_msg := SQLERRM;   
  IF p_cur%ISOPEN
         THEN
            CLOSE p_cur;
         END IF;
   END  a_getbyid;


 PROCEDURE a_getbyname ( --a
       
  p_name    IN     VARCHAR2 ,
  p_pagesize      IN        NUMBER,
        p_pageindex     IN        NUMBER,
  p_count      OUT       aref,                      --返回列表总个数
  p_cur      OUT      aref,        --记录集合
    p_err_common_code   OUT      NUMBER,
       p_err_logic_code    OUT      NUMBER,
       p_err_code          OUT      NUMBER,
       p_err_msg           OUT      VARCHAR2
 )
 IS  
 BEGIN
      --初值设置
   p_err_common_code := 0;
   p_err_logic_code := 0;
      p_err_code := 0;
      p_err_msg := '';
  OPEN p_count FOR
  SELECT COUNT(*) AS COUNT FROM a WHERE name = p_name;
  
   IF  p_pagesize <= 0 OR p_pageindex < 0 THEN 
  OPEN p_cur FOR
  
    SELECT *    
    FROM a WHERE name = p_name /* ORDER BY id DESC */;   
  ELSE
     OPEN p_cur FOR
   SELECT * FROM (
   SELECT ROWNUM AS tempid , t1.* FROM
   (
    SELECT *    
    FROM a WHERE name = p_name /* ORDER BY id DESC */)t1   
  )
    WHERE tempid > p_pageindex * p_pagesize AND tempid <= ( p_pageindex + 1 ) * p_pagesize ;
 END IF;
   EXCEPTION
      WHEN OTHERS
      THEN
         p_err_code := SQLCODE;
         p_err_msg := SQLERRM;   
  IF p_count%ISOPEN
         THEN
            CLOSE p_count;
         END IF;
  IF p_cur%ISOPEN
         THEN
            CLOSE p_cur;
         END IF;
   END  a_getbyname;


 PROCEDURE a_deletebyid ( --a
       
  p_id    IN   NUMBER ,
   p_err_common_code   OUT      NUMBER,
      p_err_logic_code    OUT      NUMBER,
      p_err_code          OUT      NUMBER,
      p_err_msg           OUT      VARCHAR2

 )
 IS  
 BEGIN
      --初值设置
   p_err_common_code := 0;
   p_err_logic_code := 0;
      p_err_code := 0;
      p_err_msg := '';
  
  DELETE a WHERE id = p_id;
 COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
   ROLLBACK;
         p_err_code := SQLCODE;
         p_err_msg := SQLERRM;   
   END  a_deletebyid;

脚本:

DECLARE
   t_count   NUMBER;
BEGIN
   FOR r IN (SELECT 'a' AS a
               FROM DUAL)
   LOOP
      SELECT 1
        INTO t_count
        FROM DUAL;

      DBMS_OUTPUT.put_line (r.a);
      DBMS_OUTPUT.put_line (t_count);
   END LOOP;
END;

索引主键:

ALTER TABLE a ADD CONSTRAINT pk_a PRIMARY KEY (id)USING INDEX  TABLESPACE indx ;

CREATE [UNIQUE] INDEX u_a_NAME ON a
(name)
LOGGING
TABLESPACE INDX ;

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值