PL/SQL

时间:2021-10-19 02:22:33

-- Created on 2019/10/7 by LK 
declare 
  -- 声明变量、游标
  i integer;
begin
  -- 执行语句
  
  -- [ 异常处理 ]
end;

1、我们使用PL/SQL打印第一个“Hello Word”

declare
  
begin
  dbms_output.put_line(Hello Word);
end;

-- 结果
Hello Word

(我们的黑框打印:)

  1、WIN R (CMD)

  2、输入sqlplus   ,然后输入相应的登录名和密码

  注意:这里我们需要打开一个开关否则看不见打印的字符串“Hello word”

    打开方法:在刚刚的黑框中输入  :set  serveroutput  on

  3、粘贴上上面写的PL/SQL

  4、回车,然后加  /

2、变量

  变量的声明方式

  变量名   变量类型(变量长度)  例如   v_name varchar(20);

 

  2.1、普通数据类型(char、varchar2、date、number、boolean、long)

    赋值:

      (1)直接赋值:      :=   例如   v_name:=‘张飒‘

      (2)语句赋值:select .....into....

--打印人员信息:包括姓名、薪水、地址
declare
  --姓名
    v_name varchar2(20) := 张三;
  --薪水
    v_sal number;
  --地址
    v_addr varchar2(20) ;
begin
    --直接赋值
    v_sal := 15000;
    -- 语句赋值
    select 北京市 into v_addr from dual;
    
    --打印输出
  dbms_output.put_line(姓名:||v_name||,薪水:||v_sal||,地址:||v_addr) ;
end

  2.2、特殊变量类型(引用型变量、记录型变量)

    变量长度取决于表中字段类型长度

    通过  表名.类名%type   指定变量的类型和长度  例如:v_name  emp.ename%type

--打印人员信息:包括姓名、薪水
declare
  --姓名
    v_name emp.ename%type;
  --薪水
    v_sal emp.sal%type;
  
begin
   select ename,sal into v_name,v_sal from emp where empno = 7839;
    
    --打印输出
  dbms_output.put_line(姓名:||v_name||,薪水:||v_sal) ;
end;

  记录型变量(相当于java中的对象)

-- 查询emp中7839 号员工的个人信息,并打印姓名薪水
DECLARE
    v_emp emp%rowtype;
BEGIN
    select * into v_emp from emp where emp.empno = 7839;
    -- 打印数据
    dbms_output.put_line(姓名:||v_emp.ename||,薪水:||v_emp.sal);
END;

3、流程控制

  3.1 条件分支

-- 判断emp中记录超过20条数据,10-20条数据,10条一下
DECLARE
    V_COUNT NUMBER;
BEGIN
    SELECT COUNT(*) INTO V_COUNT FROM EMP;

    IF V_COUNT > 20 THEN
        DBMS_OUTPUT.PUT_LINE(表中记录数超过20条: || V_COUNT);
    ELSIF V_COUNT >= 10 THEN
        DBMS_OUTPUT.PUT_LINE(表中记录数在10-20条: || V_COUNT);
    ELSE
        DBMS_OUTPUT.PUT_LINE(表中记录数10条一下: || V_COUNT);
    END IF;
END;

  3.2 循环(有三种:这只讲loop)

  

-- 打印数字1-10
DECLARE
    --定义自增变量
    V_NUM NUMBER := 1;
BEGIN
    LOOP
        EXIT WHEN V_NUM > 10;
        DBMS_OUTPUT.PUT_LINE(V_NUM);
        --自增变量
        V_NUM := V_NUM   1;
    END LOOP;
END;