`
fei_xiang
  • 浏览: 18161 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
  • scwwc55555: 楼主很给力,谢谢
    S1SH整合
  • fei_xiang: fengkex 写道觉得自己理论性的东西欠缺的太多了,也不知道 ...
    ORM
  • fengkex: 觉得自己理论性的东西欠缺的太多了,也不知道怎么补,面试问到了怎 ...
    ORM

oracle 之pl/sql 基础学习

阅读更多
1. PL/SQL 程序由三个块组成,即声明部分、执行部分、异常处理部分。
PL/SQL 块的结构如下:
   DECLARE /声明部分:在此声明 PL/SQL 用到的变量,类型及游标,以及局部的存储过程和函数/
   BEGIN  /执行部分:过程及 SQL 语句,即程序的主要部分/
   EXCEPTION /执行异常部分:错误处理/
   END;
2.
---------------------------- 取出表中某些字段的值,取得是其中的某条记录-----------
declare 
lx_name varchar2(48);
lx_age number;
lx_register date;
lx_id varchar2(48);

begin
select id,name,register_time,age into lx_id,lx_name,lx_register,lx_age from person where id=1;
                                                             --查询表中某条数据
dbms_output.put_line('id   '||'name   '||'register      '||'age');
dbms_output.put_line(lx_id||'    '||lx_name||'    '||lx_register||'    '||lx_age);
                                                            --输出变量的数据
end;

---------------------------- 使用循环while--------------------------------------
DECLARE
x number;
BEGIN
    X:=0;
    WHILE x<=3 LOOP
       X:=x+1;
       DBMS_OUTPUT.PUT_LINE('内: x='||x);
    END LOOP;
       DBMS_OUTPUT.PUT_LINE('外: x='||x);
END;

----------------使用if ..else--------------------------------------------------
DECLARE
a number;
b varchar2(10);
begin
   a:=3;  --赋值
   IF a=2 THEN
      b:='A';
   elsif a=3 then
      b:='B';
  ELSE
      b:='C';
  END IF;
      DBMS_OUTPUT.PUT_LINE('b的值是: '||b);
end;

---- -------------if ...elsif ...else 的练习--------------------------
declare
a number;
begin
     a:=2;
     if a=1 then
          DBMS_OUTPUT.PUT_LINE('a==1');
        elsif a=2 then
          DBMS_OUTPUT.PUT_LINE('a==2');
     else
        DBMS_OUTPUT.PUT_LINE('a!=1');
     end if;
end;

 ---------------loop语句--------------------------------------------------
DECLARE
x number;
BEGIN
   x:=0;
   LOOP
      x:=x+1;
   IF x>=3 THEN
      EXIT;
   END IF;
      DBMS_OUTPUT.PUT_LINE('内: x='||x);
  END LOOP;
      DBMS_OUTPUT.PUT_LINE('外: x='||x);
END;

-------------使用for 循环,reverse 放到in 前面,就是降序-------------------------
declare
x number;
begin
     for x in 1..5 loop
      DBMS_OUTPUT.PUT_LINE('x='||x);
      end loop;
end;

---------------------------------------case语句--------------------------------
DECLARE
a number;
b varchar2(10);
   begin
        a:=2;  --赋值
   CASE
       WHEN a=1 THEN b:='A';
       WHEN a=2 THEN b:='B';
       WHEN a=3 THEN b:='C';
   ELSE
       b:='Others';
   END CASE;
       DBMS_OUTPUT.PUT_LINE('b的值是: '||b);
END;

-------------------------------记录类型------------------------------------
相当于C语言里面的结构体。就是一种类型,类似于oracle 里面的number ,String 等数据类型一样。


DECLARE

          ----声明
TYPE myrecord IS RECORD
(
   id varchar2(10),
   name varchar2(10)
);

        --- 使用该声明类型
real_record myrecord;
begin
            --- 给变量real_record赋值
SELECT id, name INTO real_record FROM person WHERE id='1';   

           ---- 打印real_record 里面的数据
DBMS_OUTPUT.PUT_LINE(real_record.id||'       '||real_record.name);
end;

    -------------------------- 行类型,是拿出整行的数据,是所有的字段数据  --------
declare
a person%rowtype;           -- 格式: 变量名 表名%rowtype

begin
SELECT * INTO a FROM person where id=1;   

DBMS_OUTPUT.PUT_LINE(a.id||'       '||a.name);
end;

--------------------------游标--------------------------------------------------
  1.	什么是游标?
游标是一种PL/SQL控制结构,可以对SQL语句的处理进行显示控制,便于对表的行数据一行一行进行处理。
2.	游标分类?
显式游标: 以声明的方式显式使用。
隐式游标: 对一条的SQL语句自动创建一个隐式游标。


declare

--CURSOR mycursor IS SELECT * FROM person;     声明游标,指定游标指向的表,默认表的第一行.查询所有的数据出来,

CURSOR mycursor(lx_age number) IS SELECT * FROM person where age=lx_age;    ----查询与参数匹配数据出来,

rowtest person%rowtype;   ----声明行类型
begin
     
    open mycursor(32);       ---- 打开游标,在这里传参数。
    
    fetch mycursor into rowtest;
    while mycursor%found loop      --当游标有下一行时进行循环
         
         DBMS_OUTPUT.PUT_LINE(rowtest.id||'       '||rowtest.name);
         fetch mycursor into rowtest;
     END LOOP;
     
     close mycursor;    ---关闭游标
end;

----------------------------游标的模糊查询--------------------------------------
declare
CURSOR mycursor(lx_name varchar2) IS SELECT * FROM person where name like lx_name; 
                                  ----lx_name 不能指定该变量的大小                        
rowtest person%rowtype; 
begin
     
    open mycursor('%b%');       ---- 打开游标,在这里传参数,'%'就相当于一个通配符
    
    fetch mycursor into rowtest;
    while mycursor%found loop      --当游标有下一行时进行循环
         
         DBMS_OUTPUT.PUT_LINE(rowtest.id||'       '||rowtest.name);
         fetch mycursor into rowtest;
     END LOOP;
     
     close mycursor;    ---关闭游标
end;
1
1
分享到:
评论

相关推荐

    oracle 9i pl/sql程序设计笔记

    **标题与描述**:本文档围绕“Oracle 9i PL/SQL程序设计笔记”这一核心主题,深入探讨了PL/SQL语言的基础知识及其在Oracle 9i数据库环境中的应用。 **关键词**:Oracle 9i、PL/SQL #### PL/SQL程序结构详解 **2.1...

    Oracle PL/SQL实战(待续)

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL的数据处理能力与PL的程序设计...通过实践和学习"Oracle PL/SQL实战(待续)"的相关内容,我们可以提升在Oracle环境中解决问题的能力,更好地管理和优化数据库系统。

    Oracle资料学习PL/SQL必备

    "Oracle资料学习PL/SQL必备"这个主题涵盖了对Oracle数据库系统以及PL/SQL编程语言的学习资源,特别是针对那些希望深入理解并掌握PL/SQL的初学者或专业人士。PL/SQL的基础部分是了解和使用Oracle数据库的关键,它包括...

    oracle10g_pl/sql

    通过深入学习Oracle 10g PL/SQL,不仅可以掌握数据库编程的基本技能,还能了解如何利用这些技能来设计和实现复杂的业务逻辑,优化数据库性能,以及更好地维护和管理Oracle数据库系统。本教程涵盖了所有这些关键知识...

    Oracle 12c PL/SQL程序设计终极指南

    本书以Oracle的最新版本12c为基础,呈现的是最新的PL/SQL技术,这一点也优于已出版的同类书.全书以一个综合性的人力资源项目为驱动,不仅能将各个理论知识点很好地融入实践,而且还能让读者体验完整的项目实操过程...

    oracle 中 pl/sql 只是学习方法

    Oracle中的PL/SQL是一种强大的编程语言,它是Oracle数据库与应用程序之间的桥梁,专为数据库操作而设计。PL代表“过程化语言”(Procedural Language),SQL则是“结构化查询语言”(Structured Query Language)。...

    ORACLE PL/SQL从入门到精通

    ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括...这本书籍将为读者提供一个全面、系统的学习路径,帮助数据库管理员、开发人员深入理解并掌握ORACLE PL/SQL的强大功能和应用技巧。

    oracle pl/sql从入门到精通 配套源代码

    Oracle PL/SQL是一种强大的编程语言,它结合了SQL(结构化查询语言)的数据库操作功能与PL/SQL的程序设计特性,广泛应用于Oracle数据库的开发和管理。这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了...

    oracle PL/SQL pdf学习资料

    oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料oracle PL/SQL pdf学习资料

    Oracle PL/SQL学习官方教材

    以下是对"Oracle PL/SQL学习官方教材"中可能包含的主要知识点的详细解释: 1. **基础概念**:首先,教材会介绍PL/SQL的基本概念,包括块(Block)、变量(Variable)、常量(Constant)、数据类型(Data Types)和...

    Oracle PL/SQL程序设计(第5版)(套装上下册)

    《Oracle PL/SQL程序设计(第5版)(套装上下册)》基于Oracle数据库11g,从PL/SQL编程、PL/SQL程序结构、PL/SQL程序数据、PL/SQL中的SQL、PL/SQL应用构建、高级PL/SQL主题这6个方面详细系统地讨论了PL/SQL以及如何...

    Oracle PL/SQL实例精解 数据库建立代码

    总结起来,"Oracle PL/SQL实例精解 数据库建立代码"涵盖了数据库设计、对象创建、索引优化以及数据插入等多个方面,是学习和提升Oracle数据库管理技能的宝贵资源。通过解析和执行这些示例,开发者可以更好地理解和...

    Oracle PL/SQL程序设计(第5版)(上下册)

    ### Oracle PL/SQL程序设计(第5版)(上下册)知识点概述 ...本书不仅覆盖了PL/SQL的基础知识,还包括了大量的实战经验和高级主题,对于想要深入了解和掌握Oracle数据库的读者来说是非常宝贵的资源。

    Oracle8 PL/SQL程序设计

    《Oracle 8i PL/SQL高级程序设计》这本书很可能详细阐述了这些内容,不仅包含基础概念,还可能涉及到了更复杂的主题,如包(PACKAGE)、触发器(TRIGGER)、数据库链接(DBLINK)和分布式数据库操作等。通过深入阅读...

    PL/SQL Developer 远程连接Oracle数据库

    PL/SQL Developer是一款专为Oracle数据库设计的集成开发环境,它极大地简化了PL/SQL语言的编写、调试和管理任务。远程连接Oracle数据库是PL/SQL Developer的一项关键功能,允许用户在本地计算机上操作和管理远程...

    Oracle PL/SQL 实例精解(第4版涵盖Oracle 11g)+源码脚本

    总的来说,"Oracle PL/SQL 实例精解(第4版)"是一本全面的教程,不仅介绍了PL/SQL的基础,还涵盖了高级主题和实践案例,对于希望提升Oracle数据库编程技能的开发者来说,是一本不可多得的参考书籍。配合源码脚本,...

    Oracle Database 12c PL/SQL开发指南 实例源代码

    总的来说,学习并熟练掌握Oracle Database 12c的PL/SQL开发不仅能够提升数据库管理能力,还能为构建高效、稳定且易于维护的企业级应用打下坚实的基础。而"Oracle Database 12c PL/SQL开发指南(第7版)"的源代码示例...

    Oracle PL/SQL专家指南-高级PL/SQL解决方案的设计与开发

    通过学习这些内容,开发者可以掌握Oracle PL/SQL的高级特性,从而设计和实现更高效、更稳定的数据库应用程序。无论你是数据库管理员、系统架构师还是开发人员,这本书都将为你提供宝贵的指导,助你在Oracle数据库...

    oracle pl/sql 实例精解(中文原书第4版)

    本书是一本逐步分解的,详尽的pl/sql编程教程,使用真实场景的试验、范例和练习来介绍读者所需的pl/sql编程技能,涵盖oracle 11g的最新特性。作者的写作手法源自于在哥伦比亚大学教授pl/sql编程技术的经验,深度...

Global site tag (gtag.js) - Google Analytics