PL/SQL 是基于SQL 语言的一种扩展,是运行在Oracle服务器端的一种语句,以下给出PL/SQL 的基本使用方式
基本语法:
--数据类型 declare type table_datatype is table of varchar2(50) index by binary_integer; --表类型 v_table table_datatype; i_provider_id int ; v_provider_name varchar(20); v_provider_address varchar(20); type record_datatype is record ( id int , name varchar(20), address varchar(20) ); v_record record_datatype ; begin v_table(0) := '张三'; v_table(1) := '李四'; v_table(2) := '王五'; dbms_output.put_line(v_table(0)||','||v_table(1)||','||v_table(2)); --select into 的 语法必须返回单行,否则会出现错误 select provider_id,provider_name,provider_address into i_provider_id,v_provider_name,v_provider_address from t_provider_info where provider_id=1; dbms_output.put_line(i_provider_id||','||v_provider_name||','||v_provider_address); --select into 给table类型的变量赋值 select provider_id,provider_name,provider_address into v_table(0),v_table(1),v_table(2) from t_provider_info where provider_id=1; dbms_output.put_line('table:'||v_table(0)||','||v_table(1)||','||v_table(2)); v_record.id :=1; v_record.name :='赵六'; v_record.address :='广州'; dbms_output.put_line(v_record.id||','|| v_record.name||','||v_record.address); select provider_id,provider_name,provider_address into v_record from t_provider_info where provider_id=2; dbms_output.put_line(v_record.id||','|| v_record.name||','||v_record.address); --循环的语法 loop ,end loop exit when declare v_count int :=0 ; begin loop v_count := v_count+1 ; exit when v_count=5; dbms_output.put_line('v_count:'||v_count); end loop ; end ; --循环语法 when ,loop end loop; declare v_count int :=0; begin while v_count<>5 loop dbms_output.put_line('while 循环:v_count:'||v_count); v_count := v_count+1; end loop ; end ; --循环语法 for loop end loop; declare v_count int :=0; begin for v_ount in 2..5 loop dbms_output.put_line('for 循环:v_count:'||v_count); v_count :=v_count+1 ; end loop ; end ; -- if的语法 declare v_count int := 6 ; begin if v_count=5 then dbms_output.put_line('满足条件5:v_count:'||v_count); elsif v_count=3 then dbms_output.put_line('满足条件3:v_count:'||v_count); else dbms_output.put_line('不满足条件3、5:v_count:'||v_count); end if ; end ; --case when 的语法 declare v_count int :=2 ; begin case v_count when 1 then dbms_output.put_line('满足条件1:v_count:'||v_count); when 2 then dbms_output.put_line('满足条件2:v_count:'||v_count); else dbms_output.put_line('不满足条件1、2:v_count:'||v_count); end case ; end ; --游标的使用 ,使用fetch的方式遍历游标,必须显示打开和关闭游标 declare cursor c_cursor is select provider_id,provider_name,provider_address from t_provider_info ; --定义游标 i_provider_id int ; v_provider_name varchar(20); v_provider_address varchar(20); begin open c_cursor;--打开游标 loop fetch c_cursor into i_provider_id,v_provider_name,v_provider_address; dbms_output.put_line('游标的使用:'||i_provider_id||','||v_provider_name||','||v_provider_address); exit when c_cursor%notfound ; end loop ; close c_cursor; end ; --使用for 循环的方式遍历游标 不需要显示打开后者关闭游标 declare cursor c_cursor is select provider_id,provider_name,provider_address from t_provider_info ; --定义游标 c_row c_cursor%rowtype ; --定义一个游标变量 begin for c_row in c_cursor loop dbms_output.put_line('隐式游标的使用:v_provider_name'||c_row.provider_id); end loop; end ; --调用有返回值的存储过程 declare v_name varchar(20) ; v_id int ; begin pro_provider_info(1,v_name,v_id); dbms_output.put_line('v_name:'||v_name||',v_id:'||v_id); end ; end ; /
过程、触发器 函数的语法:
存储过程:
create or replace procedure pro_provider_info(id in int,name out varchar2,r_id out int) as v_provider_name varchar(50) := '广州发展中心'; cursor c_cursor is select provider_id,provider_name,provider_address from t_provider_info where provider_id=id ; --定义一个游标行的变量 c_row c_cursor%rowtype ; provider_id t_provider_info.provider_id%type ; --type 用来避免硬编码的错失 begin --隐式调用 for c_row in c_cursor loop provider_id := c_row.provider_id ; --更新对应的ID 的值 if provider_id=id then update t_provider_info set provider_name=v_provider_name where provider_id=id; name := v_provider_name; r_id := id; commit ; end if ; end loop ; end ;
触发器:
--触发器 create or replace trigger tri_provider_info after insert or update or delete on t_provider_info for each row begin declare v_insert varchar(20) :='插入操作' ; v_update varchar(20) :='更新操作' ; v_delete varchar(20) :='删除操作' ; begin if inserting then insert into t_log(oper_id,oper_name) values(t_global_seq.nextval,v_insert); dbms_output.put_line('插入操作'); elsif updating then --,:old.provider_id,:new.provider_id insert into t_log(oper_id,oper_name) values(t_global_seq.nextval,v_update); dbms_output.put_line('更新操作'); elsif deleting then insert into t_log(oper_id,oper_name) values(t_global_seq.nextval,v_delete); dbms_output.put_line('删除操作'); else dbms_output.put_line('无法明确的操作'); end if ; --commit ; 在触发器中不需要手动提交 end ; end ; /
不断完善中
相关推荐
循环语句是PL/SQL编程中用来重复执行一组语句的结构,包括loop、while、for三种形式,它们各自有不同的使用场景和语法。 分支条件语句在PL/SQL中用来根据不同的条件执行不同的代码分支,主要包括CASE表达式和if-...
这本书"Oracle PL/SQL从入门到精通"的配套源代码,显然是为了帮助读者通过实践来深入理解和掌握Oracle数据库的编程技术。 首先,让我们探讨Oracle PL/SQL的基础知识。PL/SQL是Oracle数据库的内置编程语言,由块构成...
PL/SQL是Oracle数据库系统中的过程式语言,它结合了SQL的数据操作能力与结构化编程语句,使得开发者能够创建复杂的...对于想要系统学习PL/SQL的开发者来说,这是一个宝贵的资源,可以帮助你逐步成为PL/SQL编程的专家。
本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法...
Oracle PL/SQL 编程及最佳实践 Oracle PL/SQL 是一种高级编程语言,用于开发 Oracle 数据库中的存储过程、函数和触发器。PL/SQL language 提供了强大的编程能力,可以实现复杂的业务逻辑,并且与 Oracle 数据库紧密...
本指南旨在为初学者提供一个基础的PL/SQL编程入门,帮助他们理解并掌握这个强大的工具。 ### 第一章 PL/SQL程序设计简介 PL/SQL(Procedural Language/Structured Query Language)结合了SQL的查询功能和一种类似C...
本书是专门为oracle应用开发人员提供的sql和pl/sql编程指南。通过学习本书,读者不仅可以掌握oracle常用工具oracle universal installer、net comfiguration assistant、sql developer、sql*plus的作用及使用方法...
#### 一、PL/SQL编程基础 - **PL/SQL简介**:PL/SQL(Procedural Language for SQL)是Oracle数据库的一种内嵌式过程化语言,用于增强SQL的功能。它允许在SQL查询的基础上添加控制流语句、变量定义、错误处理等特性...
Oracle PL/SQL从入门到精通 配书教学视频 第11章
标题中提到的“PL/SQL开发文档1”,说明本文档是关于PL/SQL开发的入门级指导材料,面向希望学习使用PL/SQL进行数据库程序单元开发的用户。文档很可能是Oracle公司内部或其授权的培训机构用于教学目的的官方材料。 ...
本书是专门为Oracle应用开发人员提供的SQL和PL/SQL编程指南。通过学习本书,读者不仅可以掌握Oracle常用工具Oracle Universal Installer、Net Comfiguration Assistant、SQL Developer、SQL*Plus的作用及使用方法,...
教程名称:Oracle高级开发课程之PL-SQL编程入门视频课程目录:【】PL_SQL编程课程_-lesson3【】PL_SQL编程课程_lesson5-2(完结)【】PL_SQL编程课程_最佳入门教程-intr1【】PL_SQL编程课程_最佳入门教程-lesson1【】...
PL/SQL(Procedural Language/Structured Query Language)是Oracle数据库中的过程式编程语言,它结合了SQL查询语句和传统的过程式编程元素,使得在数据库管理中进行复杂逻辑处理成为可能。以下是对PL/SQL的学习笔记...
二、PL/SQL编程 1. PL/SQL块结构:PL/SQL由声明部分、执行部分和异常处理部分组成。理解块的结构对于编写有效程序至关重要。 2. 变量与常量:PL/SQL支持声明变量和常量,用于存储数据。学习如何声明、初始化和改变...
4. **PL/SQL基础**:学习PL/SQL的编程元素,如变量、常量、条件语句(IF-THEN-ELSIF-ELSE)、循环(WHILE、FOR)、异常处理(BEGIN-EXCEPTION-END)以及过程和函数的创建与调用。 5. **PL/SQL高级**:探讨PL/SQL中...
Oracle PL/SQL是一种专为Oracle数据库设计的编程语言,它扩展了标准的SQL,使得开发者能够在数据库级别进行更复杂的逻辑处理。PL/SQL是Oracle服务器的一部分,作为一个内置引擎,它处理PL/SQL程序块,而SQL执行器则...
《PL/SQL精通》这本书是针对Oracle数据库管理系统中PL/SQL编程语言的深入学习指南。Oracle SQL是Oracle数据库系统的核心语言,而PL/SQL则扩展了SQL的功能,提供了过程化编程的能力,使得数据库管理和开发更加高效和...
1. **PL/SQL简介**:首先会介绍PL/SQL的基本结构和特性,它是如何与SQL交互的,以及为何在Oracle数据库环境中使用PL/SQL编程。 2. **PL/SQL块**:PL/SQL代码是以块为单位编写的,包括声明部分、执行部分和异常处理...
这个"PL/SQL中文帮助手册"是7.0版本,对于理解和掌握PL/SQL编程具有极大的指导价值。 在PL/SQL中,主要包含以下核心概念: 1. **块结构**:PL/SQL程序的基本单元是块,包括声明部分、执行部分和异常处理部分。声明...
Oracle Database 10g PL/SQL入门教程是针对初学者设计的一份教程,旨在帮助读者掌握Oracle数据库系统中PL/SQL编程语言的基础知识。PL/SQL是Oracle数据库特有的编程语言,它结合了SQL(结构化查询语言)的功能,用于...