日期:2014-05-17  浏览次数:20913 次

oracle存储过程和函数示例
--1、创建表
    CREATE TABLE STUDENT
    (
      SNO NUMBER(4) PRIMARY KEY,
      SNAME VARCHAR2(20),
      SAGE NUMBER(4),
      SSEX VARCHAR(2)
    )
--2、创建序列
    CREATE SEQUENCE MY_NUM
           START WITH 1
           INCREMENT BY 1
           MAXVALUE 30 NOCYCLE;
--3、设置约束,默认值等操作
    --sage设置check约束
    ALTER TABLE STUDENT MODIFY
    (
          SAGE CHECK(SAGE>18)
    );
    --SSEX设置check约束
    ALTER TABLE STUDENT MODIFY
    (
          SSEX CHECK(SSEX='男' or ssex='女')
    );
    --sage设置默认值
    ALTER TABLE STUDENT MODIFY
    (
          SAGE DEFAULT(20)
    );
--4、插入数据
    INSERT INTO STUDENT VALUES(MY_NUM.NEXTVAL,'张三',default,'男');
    INSERT INTO STUDENT VALUES(MY_NUM.NEXTVAL,'李斯',21,'女');
    INSERT INTO STUDENT VALUES(MY_NUM.NEXTVAL,'天启',default,'男');
    --附加:查看当前序列的号数
    SELECT MY_NUM.CURRVAL FROM DUAL;
--5、查询表
    SELECT * FROM STUDENT
--6、使用事务
    BEGIN 
      INSERT INTO STUDENT VALUES(MY_NUM.NEXTVAL,'王林',23,'男');
      UPDATE STUDENT SET SSEX='男' WHERE SNAME='天启';
      COMMIT;
      DBMS_OUTPUT.put_line('语句执行成功');
      EXCEPTION --出异常执行该语句
       WHEN OTHERS THEN
        ROLLBACK;
        DBMS_OUTPUT.put_line('语句执行失败');
     END;
--7、创建存储过程
     --例题1:
       ----不带参数的存储过程
       CREATE OR REPLACE PROCEDURE STUDENT_PRO
       AS
       BEGIN
         DBMS_OUTPUT.put_line('创建存储过程'); ----此处必须加分号
        END;
      --调用存储过程
      BEGIN
        STUDENT_PRO;----此处必须加分号
      END;
      --删除存储过程
      drop procedure STUDENT_PRO;
    --例题2:
      ---默认为in输入参数,OUT为输出参数,TESTOUT中带两个参数,一个输入参