`
凯旋人生
  • 浏览: 63259 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

PLSQL复习一

阅读更多

set serveroutput on;

begin
  dbms_output.put_line('Hello World!');
end;

--语句的组成
declare
   v_num number := 0;
begin
   v_num :=2/v_num;
    dbms_output.put_line(v_num);
exception
   when others then
        dbms_output.put_line('error');
end;

常用变量类型:
1.   binary_integer: 主要用来计数 而不是用来表示字段的类型
2.   number:数字类型
3.   char:定长字符串
4.   varchar2:变长字符串
5.   date:日期
6.   long:长字符 最长2g
7.   boolean 布尔类型 true fasle 和null值 ,不给初值为null

例子:

       declare
         v_temp number(1);
         v_count binary_integer :=0;
         v_sal number(7,2) := 4000.00;
         v_date date :=sysdate;
         v_pi constant number(3,2) := 3.14;
         v_valid boolean :=false;
         v_name varchar2(20) not null :='MyName';
     begin
         dbms_output.put_line('v_temp value:'|| v_temp);
     end;
---------------------------
v_temp value:
---------------------------
       declare
          v_empno number(4);
          v_empno2 emp.empno%type
          v_empno3 vempno2%type
       bengin
          dbms_output.put_line('Test');
       end;

--Table变量类型 相当于java数组
set serveroutput on;
     declare
         type type_table_emp_empno is table of emp.empno%type index by binary_integer;
             v_empnos type_table_emp_empno;
      begin
         v_empnos(0) :=7369;
         v_empnos(2):=7839;
         v_empnos(-1):=9999;
         dbms_output.put_line(v_empnos(-1));
      end;
************
9999
************

--Record变量类型
declare
   type type_record_dept is record
   (
     deptno dept.deptno%type,
        dname dept.dname%type,
        loc dept.loc%type
   );
   v_temp type_record_dept;
begin
   v_temp.deptno:=50;
   v_temp.dname :='aaa';
   v_temp.loc :='bj';
    dbms_output.put_line(v_temp.deptno||' '||v_temp.dname);
end;
************
50 aaa
************

--使用%rowtype声明record变量
declare
       v_temp dept%rowtype;
begin
   v_temp.deptno:=50;
   v_temp.dname :='aaa';
   v_temp.loc :='bj';
    dbms_output.put_line(v_temp.deptno||' '||v_temp.dname);
end;
***************
50 aaa
***************

PLSQL的SQL语句
PLSQL中select语句返回一条且只有一条数据

declare
    v_ename emp.ename%type;
    v_sal emp.sal%type;
  begin
    select ename,sal into v_ename,v_sal from emp where empno = 7369;
  dbms_output.put_line(v_ename ||' '|| v_sal);
  end;
***************
SMITH 800
***************
简便写法
declare
  v_emp emp%rowtype;
begin
  select * into v_emp from emp where empno=7369;
   dbms_output.put_line(v_ename ||' '|| v_sal);
end;
***************
SMITH 800
***************

--insert 语句
declare
  v_deptno dept.deptno%type:=50;
  v_dname dept.dname%type :='aaaa';
  v_loc dept.loc%type :='bj';
begin
   insert into dept2 values (v_deptno,v_dname,v_loc);
  commit;
end;
-----------------------------------------
declare
       v_deptno emp2.deptno%type :=10;
       v_count number;
begin
--   update emp2 set sal = sal/2 where deptno=v_deptno;--影响3条
--   select count(*) into v_count from emp2;--影响1条,指生成1个值
select deptno into v_deptno  from emp2 where empno=7369;
dbms_output.put_line(sql%rowcount||'跳记录被影响 ');
--sql%rowcount sql是关键字 rowcount属性
commit;
end;

----------------------------------------
PLSQL的DDL语句 执行需要immediate

begin
     execute immediate 'create table T (nnn varchar2(20) default ''aaa'')';
end;

-- if语句
  取出7369的薪水 如果小于'low',如果<2000则输出'middle'否则'high'
declare
     v_sal emp.sal%type;
  begin
       select sal into v_sal from emp
                  where empno=7369;
       if(v_sal<1200) then
          dbms_output.put_line('low');
       elsif(v_sal <2000) then                  --elsif
          dbms_output.put_line('middle');
       else
          dbms_output.put_line('high');
       end if;
   end;
******
low
******

--循环
  1. 相当于do.. while..
  declare
     i binary_integer :=1;
  begin
    loop
       dbms_output.put_line(i);
       i:= i+1;
       exit when(i >=1);
   end loop;
  end;
*****
1
2
3
4
5
6
7
8
9
******
10
--相当于while
declare
   j binary_integer :=1;
begin
  while j< 11 loop
   dbms_output.put_line(j);
    j:=j+1;
  end loop;
end;

--  相当于for 循环
begin
   for k in 1..10 loop
     dbms_output.put_line(k);
   end loop;
   for k in reverse 10..1 loop
    dbms_output.put_line(k);
   end loop;
end;

分享到:
评论

相关推荐

    plsql中文

    2. 1Z0-007 Note.doc:1Z0-007是Oracle Certified Associate, Oracle Database 12c Administrator Certified Professional的考试代码,这个文档可能是针对该考试的复习笔记或学习指南,包含PL/SQL部分的要点,如数据...

    PLSQL经典练习共9页.pdf.zip

    PLSQL,全称为Procedural Language/Structured Query Language,是Oracle数据库系统中用于扩展SQL的编程...对于初学者来说,这个压缩包提供了一个良好的起点,对于有一定基础的人来说,也是一个不错的复习和提升工具。

    第三章-plsql-SQL语言复习PPT课件.ppt

    PL/SQL SQL语言复习笔记 PL/SQL 是一种 procedural language,用于处理和操作数据库中的数据。它是 Structured Query Language(SQL)的扩展,提供了更多的编程功能和控制能力。 SQL 语言的发展 SQL 语言的发展...

    数据库程序设计复习文档.pdf

    虽然此复习文档不涉及PLSQL和SQL的详细内容,但仍然提供了丰富的理论基础和复习要点。 首先,数据库设计的过程类似于软件生命周期模型,包括需求分析、概念设计、逻辑设计、物理设计、数据库实施和运营维护。需求...

    数据库程序设计复习文档.docx

    本复习文档主要针对大连理工大学软件学院的数据库程序设计课程,重点关注Oracle数据库的相关知识,不涉及PLSQL和SQL的具体内容。复习过程中,应当掌握以下几个核心知识点: 1. **数据库设计过程**: 虽然第一章不...

    ACCP4.0Y2复习资料

    SQL PLSQL测验 Struts注册验证测验 XML DOM测注册验证测验 ACCP4.0_OOAD&XML&ORACLE_内部测试题.doc ACCP4.0_OOAD&XML&ORACLE_内部测试题-ss.doc ASP.NET.doc ASP.NET.txt EJB答案.txt Linux.txt OOAD.TXT Oracle....

    数据库知识点整理,很详细完整,适合入门或者复习。

    ### 数据库知识点整理 #### 一、数据库与表的基本操作 - **数据库和表的创建**: ...以上是对数据库基本操作的一些重要知识点总结,涵盖了创建、修改、查询等方面的内容,对于初学者和需要复习的人来说都非常有用。

    PL/SQL基础

    Oracle PL/SQL是一种在Oracle数据库环境中用于开发存储过程、函数、触发器和其他数据库对象的编程语言。...提供的"PLSQL基础(已经看完,复习1遍).pdf"文件应该是一个很好的学习资源,可以帮助巩固所学知识。

    ThinkPHP 连接Oracle数据库的详细教程[全]

    从提供的文件内容中,我们可以得到以下关于ThinkPHP连接Oracle数据库的知识点: 1. 软件位数的重要性:在安装和配置软件时,软件的...这不仅对初学者有重要的指导意义,对经验丰富的开发者也是一个很好的复习和参考。

    oracle

    本培训资料旨在为初学者提供基础且实用的Oracle知识,同时也适用于经验丰富的开发者进行复习和巩固。 Oracle数据库的核心概念包括: 1. **数据模型**:Oracle基于关系数据模型,其中数据被组织成表格形式,每个...

    Oracle面试题.doc

    ### Oracle面试题知识点详解 #### 一、填空题知识点解析 **1....以上知识点覆盖了Oracle数据库的基础概念、SQL语言的基本使用以及一些高级特性,对于准备Oracle面试的人来说是非常重要的复习内容。

Global site tag (gtag.js) - Google Analytics