函数大全: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);
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 编辑
/ 运行
相关推荐
在IT行业中,PL/SQL(Procedural ...通过这个资源包中的实例学习,不仅可以巩固理论知识,还能提高解决实际问题的能力。无论你是初学者还是有一定经验的专业人士,这个资料都将为你的技能树增添宝贵的实践经验。
oracle plsql 代码入门到精通实例演示讲解,plsql编程入门教程
通过这份“PLSQL基础学习学习课件”,初学者可以逐步了解并掌握PLSQL的基本概念、语法和应用,为进一步的数据库开发和管理打下坚实基础。这份课件将详细解析上述知识点,并通过实例演示如何编写和执行PLSQL代码,...
本文将深入探讨"PLSQL学习基础资料"中的关键知识点,旨在为初学者提供一个全面的入门指南。 首先,让我们从"Oracle-SQL语言基础"开始。SQL(Structured Query Language)是用于查询、更新和管理关系数据库的标准...
本“PLSQL学习笔记”将逐步讲解这些概念,通过实例和练习帮助读者巩固理解,进一步提升在Oracle数据库开发中的技能。无论你是初学者还是有经验的开发者,这份笔记都能提供有价值的参考。通过深入学习和实践,你将...
PLSQL是一种专为Oracle数据库设计的结构化查询语言扩展,它结合了SQL的查询...这些基本概念构成了PLSQL编程的基础,通过学习和实践,开发者可以创建复杂的数据库应用程序,实现数据处理、业务逻辑和数据验证等功能。
《Oracle PLSQL实例精解(英文原书第4版)》是Oracle数据库开发领域的一本经典著作,专注于讲解PL/SQL编程语言的应用。PL/SQL是Oracle数据库系统中用于处理结构化查询语言(SQL)的编程环境,它扩展了SQL的功能,使...
通过这14课的学习,你将能够从零基础到精通PLSql,不仅能够编写高效的数据库程序,还能解决实际工作中遇到的各种问题。教程内容详实且实践性强,无论你是想成为数据库管理员还是开发人员,这都是一个不可多得的学习...
总的来说,"PLSQL_code"压缩包中的内容可能是对PLSQL编程语言和Oracle 11g数据库管理系统的实战教程和实例代码,对于想深入了解和提升这方面技能的学习者来说,是非常宝贵的资源。通过深入学习和实践,你可以成为一...
#### 一、PL/SQL基础 **1.1 PL/SQL简介** - **定义**:PL/SQL(Procedural Language for SQL)是一种过程化语言,专门用于增强Oracle数据库的功能。它将SQL命令与传统的编程结构相结合,使得在数据库环境中编写复杂...
了解每种数据类型的特性是编写有效PLSQL代码的基础。 3. **控制结构** PLSQL提供了多种控制结构,包括条件语句(IF-THEN-ELSIF-ELSE)、循环(WHILE, FOR, LOOP)和分支语句(CASE)。这些结构允许根据特定条件...
### PL/SQL学习资料:PL/SQL Developer 7.0用户指南详解 #### 一、引言 在数据库管理与编程领域,Oracle...通过学习和实践,你将能够更高效地开发、测试和优化PL/SQL程序,为成为优秀的数据库开发者奠定坚实的基础。
在"Oracle PLSQL实例精解第4版英文版"中,读者可以深入理解PL/SQL的核心概念、语法以及实践应用。 本书的第四版可能涵盖以下关键知识点: 1. **PL/SQL基础**:介绍PL/SQL的基本结构,包括声明变量、常量、游标、表...
对于初学者,通过实例学习是掌握PL/SQL的最佳方式。可以从简单的SELECT语句开始,逐步过渡到编写复杂的存储过程和触发器。记住,实践是检验学习效果的最好方式,因此,动手编写和调试代码至关重要。 总的来说,...
通过这个示例,我们可以学习如何在Oracle数据库中定义复杂的表结构,并理解不同类型的列约束、非空约束以及数据类型的选择等关键概念。 #### 创建表命令详解 在提供的部分代码中,我们看到一个名为`fare`的表被...
在"Oracle9i PLSQL 从入门到精通.pdf"这本书中,读者将深入学习上述各个方面的知识,并通过实例和练习巩固所学。无论是初学者还是有经验的开发人员,都能从中受益,提升自己的Oracle数据库开发技能。
在"Oracle PL/SQL实例精析"中,你将学习到以下核心知识点: 1. **基础语法**:了解PL/SQL的基本结构,包括声明变量、常量、游标、表类型以及控制流程语句(如IF-THEN-ELSIF,WHILE,FOR循环)。 2. **异常处理**:...
在Oracle数据库中,创建表是数据库设计的基础步骤之一。在给定的内容中,有两个主要的表被创建:`DEPT`和`EMP`。 #### DEPT表创建 ```sql CREATE TABLE DEPT ( DEPTNO NUMBER(2) NOT NULL, DNAME VARCHAR2(14), ...
Oracle PL/SQL是一种强大的编程语言,它将SQL与过程式编程语言的特点相结合,专为在Oracle数据库环境中开发应用程序而设计...这个压缩包中的实例涵盖了从基础到高级的各个层面,是学习和提升PL/SQL编程能力的宝贵资源。