您的位置:首页 > 数据库

学习PL/SQL

2011-04-26 01:08 197 查看
明天要去面试,虽然在原来公司用的数据库是Oracle,但是使用PL/SQL用得不是很多,因此学习了下PL/SQL,记忆力不好,因此做一下记录吧

1.PL.SQL的基本格式

a.无名块

DECLARE
/*申明*/
BEGIN
/*执行*/
EXCEPTION
/*异常*/
END


b.子程序

1)函数

CREATE [OR REPLACE] FUNCTION_NAME
[(参数 [{IN|OUT||IN OUT}])] type
RETURN return_type
AS|IS
<类型、变量定义>
BEGIN
/*执行体*/
EXCEPTION
/*异常*/
END


/*
我自己来写一个
要求:通过传入的月份('201006'),从家庭成员收入表中(HomeMemberEarning)查找出该月的总的收入(earing)
CREATE OR REPLACE F_getSumEaring
(a_month varchar(6))
RETURN NUMBER IS
v_sum NUMBER
BEGIN
SELECT SUM(earing)
INTO v_sum
FROM HomeMemberEarning
WHERE month = a_month;
RETURN v_sum;
EXCEPTION
WHEN NOT_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('您需的数据不存在');
WHEN TOO_MANY_ROWS THEN
DBMS_OUTPUT.PUT_LINE('查询出错,请用游标');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('发生其它错误');
END
*/


2)存储过程

CREATE [OR REPLACE] PROCEDURE procedure_name
[(参数[{IN|OUT/IN OUT}]) TYPE]
{IS|AS}
<类型.变量定义>
BEGIN
/*执行*/
EXCEPTION
/*异常*/
END


自己写一个

/*
通过存储过程,传入月份的参数,将家庭收入表中的(HomeMemberEarning)该月的数据删除,并将删除的数据回传给该月
*/
CREATE OR REPLACE p_DeleteHomeMemberEarning
(a_month HomeMemberEarning.month%type,
a_delcount number) as no_result EXCEPTION
BEGIN
DELETE FROM HomeMemberEarning
WHERE month = a_month
IF SQL%NOTFOUND THEN
RAISE no_result;
END IF;
EXCETIION
WHEN no_result THEN
DBMS_OUTPUT.PUT_LINE('没删除任何数据');
WHEN others THEN
DBMS_OUTPUT.PUT_LINE('其它错误');
END


4.触发器

好晚了,,明晚接着写,不知道这样效果会不会好点,忽然感叹,写程序是一种需要慢慢积累和沉淀的活动啊。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: