zoukankan      html  css  js  c++  java
  • plsql语句基础

    -- plsql语言
    三大块
    declare -- 声明变量
    begin -- 执行语块
    exception -- 异常处理
    end;
    -- 属性,变量,变量类型引用
    declare
    v_empno number; -- 自定义变量属性,要与原属性一致,或同类型
    v_job emp.job%type; -- 引用数据库某列类型
    begin
    select empno into v_empno from emp where empno=7788;

    select job into v_job from emp where empno=7788;

    dbms_output.put_line(v_empno||v_job);
    end;


    declare
    v_emp emp%rowtype; -- 行变量,引用整行类型
    begin
    select * into v_emp from emp where empno=7788;

    dbms_output.put_line(v_emp.empno||v_emp.job);
    end;

    -- if语句,{}改成then,else if改成elsif ,else后面{}then都不写,要用end if结尾,空语句要写null
    declare
    v_emp emp%rowtype;
    begin
    select * into v_emp from emp where empno=7788;
    if(v_emp.sal between 2000 and 3000) then
    dbms_output.put_line(666);
    else
    dbms_output.put_line(777);
    end if;
    end;

    -- 三种循环loop,whileloop,forloop及跳转语句goto
    declare
    coun number:=0;
    coun2 number:=10;
    begin
    loop
    coun:=coun+1;
    goto flag; -- 跳转语句
    exit when coun=11;
    dbms_output.put_line(coun);
    end loop;
    <<flag>>
    loop -- 设定跳转标签
    coun2:=coun2+1;
    exit when coun2=21;
    dbms_output.put_line(coun2);
    end loop;
    end;

    -- 异常处理
    1预定义错误处理

    2非预定义错误

    3自定义错误

    -- 命令行操作
    -- 备份导出
    exp 用户名1/密码1@ORCL file="备份地址1"
    -- 恢复导入
    imp 用户名2/密码2@ORCL fromuser="用户名1" touser="用户名2" file="备份地址1"
    -- 也可用图形化界面操作

    -- 隐式游标sql,自动声明、开启、关闭
    declare
    begin
    update emp set comm=1000 where empno=7788;
    if(sql%found) then -- %found sql语句影响了一行或者多行,true,也就是sql语句能找到;对应也有%notfound
    dbms_output.put_line(sql%rowcount); -- %rowcount sql语句影响行数
    else
    dbms_output.put_line(777);
    end if;
    /*if(sql%isopen) then -- %isopen 游标是否打开,隐式游标一直是false
    dbms_output.put_line(666);
    else
    dbms_output.put_line(777);
    end if;*/
    end;

    declare
    begin
    /* update emp set comm=1000 where empno=8888;
    if(sql%found) then
    dbms_output.put_line(666);
    else
    dbms_output.put_line(777);
    end if;*/
    if(sql%isopen) then -- %isopen 游标是否打开,隐式游标一直是false
    dbms_output.put_line(666);
    else
    dbms_output.put_line(777);
    end if;
    end;


    -- 不带参数显式游标
    -- loop循环
    declare
    cursor cur_emp is select * from emp;-- 声明游标,说明游标是哪个结果集的
    v_emp emp%rowtype;
    begin
    open cur_emp;
    loop
    fetch cur_emp into v_emp;
    exit when cur_emp%notfound;
    dbms_output.put_line(v_emp.empno||v_emp.ename);
    end loop;
    close cur_emp;
    end;

    -- whileloop循环
    declare
    cursor cur_emp is select * from emp;
    v_emp emp%rowtype;
    begin
    open cur_emp;
    fetch cur_emp into v_emp;
    while cur_emp%found loop
    dbms_output.put_line(v_emp.empno||v_emp.ename);
    fetch cur_emp into v_emp;
    end loop;
    close cur_emp;
    end;

    -- forloop循环 注意:游标自动开启自动关闭
    declare
    cursor cur_emp is select * from emp;

    begin
    for v_emp in cur_emp loop
    dbms_output.put_line(v_emp.empno||v_emp.ename);
    end loop;

    end;


    -- 带参数显式游标
    select * from emp where empno=7788;

    declare
    cursor cur_emp(v_empno emp.empno%type)
    is select * from emp where empno=v_empno;
    v_emp emp%rowtype;
    begin
    open cur_emp(7788);
    fetch cur_emp into v_emp;
    dbms_output.put_line(v_emp.empno||'姓名'||v_emp.ename);
    close cur_emp;
    end;

  • 相关阅读:
    react Native 运行报错之一 gradle-2.14.1-all解压失败的问题
    react native windows create bundle folder
    gulp+browserSync+nodemon 实现express 全端自动刷新的实践
    nodejs框架express4.x 学习--安装篇
    转: angularjs 指令中动态编译的方法(适用于有异步请求的情况) 内嵌指令无效
    angular 基础练习
    自己写的数组排重+排序
    前端开发bower包管理器
    定位网站性能的一些经验
    记一次大规模数据迁移和加密
  • 原文地址:https://www.cnblogs.com/21556guo/p/13561815.html
Copyright © 2011-2022 走看看