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中带两个参数,一个输入参