`
这些年
  • 浏览: 402218 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

plsql 学习入门实例

 
阅读更多

函数大全:http://lib.iteye.com/blog/140210

 

命名规范

  标识符    命名规则        例子
  程序变量  V_name          V_name  
  程序常量  C_Name          C_company_name 
  游标变量  Name_cursor     Emp_cursor 
  异常标识  E_name          E_too_many  
  表类型    Name_table_type Emp_record_type 
  表        Name_table      Emp  
  记录类型  Name_record     Emp_record 
  SQL*Plus  替代变量        P_name P_sal  
  绑定变量  G_name          G_year_sal

创建表:

create table person (
username varchar2(20) not null,
age number not null,
money number
)

insert into person values('gbz',24,0);

 

1:数据类型

 

declare 
 --基本数据类型  变量
 v_uaername varchar2(20) not null :='gbz';
 --常量
 c_pi constant  number(6,3):=3.1414926 ;
 --声明记录类型
 type person_record is record(
    name varchar2(20) ,
    age number
 );
 --使用记录类型
 v_person person_record;
 --表类型  与map类似 key只能为数字
 type user_table_type is table of varchar2(20) index by pls_integer;  --可以是long  pls  binary  
 v_users user_table_type;
 type person_table is table of person%rowtype index by long;
 v_persontable person_table; 
 --使用表的字段类型   类型会跟着表一起变 
 v_person_age person.age%type;
 --使用表的所有字段类型   同上  
 v_person_gbz person%rowtype;
 --游标
 cursor person_cursor(p_username varchar2) is select * from person where username=p_username ;
 begin
  dbms_output.put_line('普通变量 username:'||v_uaername);--||是字符连接语句
  dbms_output.put_line('常量 age:'||c_pi);
  v_person.name:='gbz';
  v_person.age:=24;
  dbms_output.put_line('记录变量 person_name:'||v_person.name||'  age:'||v_person.age);
  v_users(1):='gbz';
  v_users(2):='张三';
  dbms_output.put_line('表类型1 '||v_users(2));
  select * into v_persontable(1) from person where username='gbz';
  dbms_output.put_line('表类型2 '||v_persontable(1).username||' money '||v_persontable(1).money);
  v_person_age:=12;
  dbms_output.put_line('使用与表字段相同的类型:'||v_person_age);
  select * into v_person_gbz from person where username='gbz';
  dbms_output.put_line('使用与表记录相同的类型:'||v_person_gbz.username);
  --游标
  open person_cursor('gbz');
  fetch person_cursor into v_person_gbz;
  close person_cursor;
  dbms_output.put_line('游标 '||v_person_gbz.username);
  --for 遍历邮标   无须打开与关闭  
  for v_person_gbz in person_cursor('gbz')
  loop 
  dbms_output.put_line(v_person_gbz.age);
  end loop;
end;

 

2:控制语句

declare    
 v_b boolean := false;   --可以是空值
    
 v_i number :=0;   
begin  
 if v_b then    
  dbms_output.put_line('ok');   
 elsif not v_b then  
  dbms_output.put_line('on');   
 else  
  dbms_output.put_line('null');   
 end if;     
    
 loop   
   --EXIT WHEN( i > 5 );    
   if v_i<15 then  
      dbms_output.put_line(to_char(v_i));   
      v_i:=v_i+1;   
   else  
      exit;   
   end if;   
 end loop;   
    
 while v_i<10 loop   
    dbms_output.put_line(to_char(v_i));   
    v_i:=v_i+1;   
 end loop;   
    
 for v_i in 0..10 loop   
    dbms_output.put_line(to_char(v_i));   
 end loop;   
    
end;  

 

 3:异常处理

     预定义异常

            

declare    
v_person person%rowtype  ;  
begin 
 select * into v_person from person where username='张三';

exception
  --预定义异常处理  无须声明
   when NO_DATA_FOUND then
       dbms_output.put_line('没有这个记录');
       dbms_output.put_line(sqlerrm);  --完整的错误信息
end;  

非预定义的异常处理

declare    
v_person person%rowtype  ;
--声明异常名 
e_notfound exception;
--与错误码关联
pragma exception_init(e_notfound,100);   --错误码即SQLCODE 
begin 
 select * into v_person from person where username='张三';

exception
   when e_notfound then
       dbms_output.put_line('没有这个记录');
       dbms_output.put_line(sqlerrm);
   when others then
       dbms_output.put_line(SQLCODE);
end;  

自定义异常

declare    
v_person person%rowtype  ;
--声明异常名 
e_found exception;

begin 
 update person set money=10 where username='gbz';
 if sql%found then
    raise e_found;
 end if;
exception
   when e_found then
       dbms_output.put_line('记录已经更新');
       dbms_output.put_line(sqlerrm);
   when others then
       dbms_output.put_line(SQLCODE);
end; 

   

declare 
 e_myException exception; --自定义异常
begin
 dbms_output.put_line('hello');
 raise e_myException;
 dbms_output.put_line('world');  --不会执行
 exception
     when e_myException then
          dbms_output.put_line(sqlcode); --当前会话执行状态,错误编码
          dbms_output.put_line(sqlerrm); --当前错误信息
          dbms_output.put_line('my error');

     when others then
          dbms_output.put_line('error');
end;

4:goto(代码逻辑混乱少用)

declare
  i number:=0;
 begin
   if i=0 then 
     goto hello;
   end if;
   <<hello>> --goto 
   begin
     dbms_output.put_line('hello');
     goto over;
   end;
   <<world>>
   begin
     dbms_output.put_line('world');
     goto over;
   end;
   <<over>>
   dbms_output.put_line('over');
 end;

5:存储过程

create or replace procedure selectperson(
p_money in number,
p_username out varchar2,
p_age in out varchar2 
)
is
v_money number :=p_money;
begin
p_username:='没有这个人';
select username into p_username from person where money>v_money;  
exception
  when others then
     p_age:=sqlerrm;
end selectperson;

 函数

CREATE OR REPLACE FUNCTION selperson(p_money in number)  
RETURN varchar2   
AS  
v_name varchar2(20) :='查无此人';  
BEGIN   
select username into v_name from person where money>p_money;
RETURN v_name   ;
exception
  when others then
    return sqlerrm; 
END selperson; 

 

补充

1:使用pl/sql调试存储过程

           1)右击存储过程名----》edit

            2)直接单击行号 或  右击行号---》 set Breakpoint

            3)右击存储过程名---》test

            4)在打开的窗口中可以输入参数值(窗口下方)  然后f9开始调试

2:在pl/sql命令行中运行

           edit   编辑         

           /        运行

分享到:
评论

相关推荐

    plsql语法编程实例

    在IT行业中,PL/SQL(Procedural ...通过这个资源包中的实例学习,不仅可以巩固理论知识,还能提高解决实际问题的能力。无论你是初学者还是有一定经验的专业人士,这个资料都将为你的技能树增添宝贵的实践经验。

    oracle plsql开发代码实例讲解

    oracle plsql 代码入门到精通实例演示讲解,plsql编程入门教程

    PLSQL学习基础课件PPT

    通过这份“PLSQL基础学习学习课件”,初学者可以逐步了解并掌握PLSQL的基本概念、语法和应用,为进一步的数据库开发和管理打下坚实基础。这份课件将详细解析上述知识点,并通过实例演示如何编写和执行PLSQL代码,...

    PLSQL学习基础资料

    本文将深入探讨"PLSQL学习基础资料"中的关键知识点,旨在为初学者提供一个全面的入门指南。 首先,让我们从"Oracle-SQL语言基础"开始。SQL(Structured Query Language)是用于查询、更新和管理关系数据库的标准...

    PLSQL学习笔记(1-7)

    本“PLSQL学习笔记”将逐步讲解这些概念,通过实例和练习帮助读者巩固理解,进一步提升在Oracle数据库开发中的技能。无论你是初学者还是有经验的开发者,这份笔记都能提供有价值的参考。通过深入学习和实践,你将...

    PLSQL编程学习资料

    PLSQL是一种专为Oracle数据库设计的结构化查询语言扩展,它结合了SQL的查询...这些基本概念构成了PLSQL编程的基础,通过学习和实践,开发者可以创建复杂的数据库应用程序,实现数据处理、业务逻辑和数据验证等功能。

    Oracle PLSQL实例精解(英文原书第4版)

    《Oracle PLSQL实例精解(英文原书第4版)》是Oracle数据库开发领域的一本经典著作,专注于讲解PL/SQL编程语言的应用。PL/SQL是Oracle数据库系统中用于处理结构化查询语言(SQL)的编程环境,它扩展了SQL的功能,使...

    PLSql循序渐进全面学习教程

    通过这14课的学习,你将能够从零基础到精通PLSql,不仅能够编写高效的数据库程序,还能解决实际工作中遇到的各种问题。教程内容详实且实践性强,无论你是想成为数据库管理员还是开发人员,这都是一个不可多得的学习...

    plsql代码和学习资料

    总的来说,"PLSQL_code"压缩包中的内容可能是对PLSQL编程语言和Oracle 11g数据库管理系统的实战教程和实例代码,对于想深入了解和提升这方面技能的学习者来说,是非常宝贵的资源。通过深入学习和实践,你可以成为一...

    ORACLE PLSQL实例精解(第4版) 中文版

    #### 一、PL/SQL基础 **1.1 PL/SQL简介** - **定义**:PL/SQL(Procedural Language for SQL)是一种过程化语言,专门用于增强Oracle数据库的功能。它将SQL命令与传统的编程结构相结合,使得在数据库环境中编写复杂...

    PLSQL入门教程(中文版)

    了解每种数据类型的特性是编写有效PLSQL代码的基础。 3. **控制结构** PLSQL提供了多种控制结构,包括条件语句(IF-THEN-ELSIF-ELSE)、循环(WHILE, FOR, LOOP)和分支语句(CASE)。这些结构允许根据特定条件...

    PLSQL学习资料

    ### PL/SQL学习资料:PL/SQL Developer 7.0用户指南详解 #### 一、引言 在数据库管理与编程领域,Oracle...通过学习和实践,你将能够更高效地开发、测试和优化PL/SQL程序,为成为优秀的数据库开发者奠定坚实的基础。

    Oracle PLSQL实例精解第4版英文版PDF和建库源码

    在"Oracle PLSQL实例精解第4版英文版"中,读者可以深入理解PL/SQL的核心概念、语法以及实践应用。 本书的第四版可能涵盖以下关键知识点: 1. **PL/SQL基础**:介绍PL/SQL的基本结构,包括声明变量、常量、游标、表...

    Oracle开发应用(PLSQL)基础大全及实例讲解.pdf

    对于初学者,通过实例学习是掌握PL/SQL的最佳方式。可以从简单的SELECT语句开始,逐步过渡到编写复杂的存储过程和触发器。记住,实践是检验学习效果的最好方式,因此,动手编写和调试代码至关重要。 总的来说,...

    plsql建表实例.txt

    通过这个示例,我们可以学习如何在Oracle数据库中定义复杂的表结构,并理解不同类型的列约束、非空约束以及数据类型的选择等关键概念。 #### 创建表命令详解 在提供的部分代码中,我们看到一个名为`fare`的表被...

    Oracle9i PLSQL 从入门到精通

    在"Oracle9i PLSQL 从入门到精通.pdf"这本书中,读者将深入学习上述各个方面的知识,并通过实例和练习巩固所学。无论是初学者还是有经验的开发人员,都能从中受益,提升自己的Oracle数据库开发技能。

    oracle-PLSQL实例精析

    在"Oracle PL/SQL实例精析"中,你将学习到以下核心知识点: 1. **基础语法**:了解PL/SQL的基本结构,包括声明变量、常量、游标、表类型以及控制流程语句(如IF-THEN-ELSIF,WHILE,FOR循环)。 2. **异常处理**:...

    oracle plsql实例练习.txt

    在Oracle数据库中,创建表是数据库设计的基础步骤之一。在给定的内容中,有两个主要的表被创建:`DEPT`和`EMP`。 #### DEPT表创建 ```sql CREATE TABLE DEPT ( DEPTNO NUMBER(2) NOT NULL, DNAME VARCHAR2(14), ...

    Oracle plsql从入门到精通_源代码

    Oracle PL/SQL是一种强大的编程语言,它将SQL与过程式编程语言的特点相结合,专为在Oracle数据库环境中开发应用程序而设计...这个压缩包中的实例涵盖了从基础到高级的各个层面,是学习和提升PL/SQL编程能力的宝贵资源。

Global site tag (gtag.js) - Google Analytics