Oracle 起步日记(5)——PL/SQL语句

PL/SQL中的基本程序单元就是块,块组成PL/SQL程序

 

PL/SQL包含三个部分:定义(DECLARE)、执行(BEGIN…END)、异常处理(EXCEPTION)

 

1)  包含执行部分的PL/SQL块

SET SERVEROUPUT ON

BEGIN

           DBMS_OUTPUT.PUT_LINE(‘hello!’);

END;

 

如果不设置SERVEROUTPUT则只提示PL/SQL过程成功完成,并没有输出hello!

 

2)  包含定义和执行部分的PL/SQL块

SET VERIFY OFF;

SET SERVEROUTPUT ON

DECLARE

           v_name VARCHAR(30);

BEGIN

           SELECT name INTO v_name FROM student WHERE id = &no;

           DBMS_OUTPUT.PUT_LINE(‘姓名:’||v_name);

END;

通过设置VERIFY,可以设置是否列出包含替代变量的文本

SET VERIFY OFF;

tupian1

SET VERIFY ON;

 tupian2

 

3)  完整的PL/SQL块

 

SET VERIFRY OFF;

SET SERVEROUTPUT ON;

DECLARE

           v_name VARCHAR(30);

BEGIN

           SELECT name INTO v_name FROM student WHERE id = &no;

           DBMS_OUTPUT.PUT_LINE(‘姓名:’||v_name);

           EXCEPTION

                    WHEN NO_DATA_FOUND THEN

                             DBMS_OUTPUT.PUT_LINE(‘该编号不存在!’);

                    WHEN TOO_MANY_ROWS THEN

                             DBMS_OUTPUT.PUT_LINE(‘该编号所对应的行不唯一!’);

END;

 

4)  PL/SQL过程

PL/SQL块一般被划分为匿名块、命名块、子程序、触发器

CREATE PROCEDURE update_tables(v_id INT,v_name varchar2)

IS

BEGIN

           UPDATE student SET id = v_id WHERE LOWER(name) = LOWER(v_name);

END;

/

EXEC update_tables(3,’LY’);

 

这里是存储过程修改学生ID的,但是在我的电脑上,我执行存储过程之后再查看,发现什么都没有变,但是,如果我是改名字的,就会变,为嘛捏?

因为我的表是设置了ID自动增长的,所以,你改了它也不会理你的

 

5)  PL/SQL函数

 

CREATE FUNCTION modify_id(v_name VARCHAR2) RETURN INT IS m_id INT;

BEGIN

           SELECT id*5 INTO m_id FROM stu WHERE name = v_name;

           RETURN m_id;

END;

 

当执行SELECT modify_id(‘A’) FROM dual;

就会有对应的返回值,不过很奇怪,我不知道dual是什么表……在这里即使是把表改成别的表显示出来的貌似是米虾米变化的(只要不是不存在的表就OK),并且对于原表是不会有任何影响的

 

在创建函数时,必须要有返回值

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值