PL/SQL学习笔记之存储过程】的更多相关文章

一:PL/SQL的两种子程序 子程序:子程序是执行一个特定功能.任务的程序模块.PL/SQL中有两种子程序:函数  和  过程. 函数:主要用于计算并返回一个值. 过程:没有直接返回值,主要用于执行操作. [因此,当需要有返回值时,记得用函数,不需要返回值的,则用存储过程] 二:创建存储过程 CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] type [, ...])] {IS |…
ORALCE  PL/SQL学习笔记 详情见自己电脑的备份数据资料…
ORACLE 提供可以把 PL/SQL 程序存储在数据库中,并可以在任何地方来运行它.这样就叫存储过程或函数. 存储函数:有返回值,创建完成后,通过select function() from dual;执行 存储过程:由于没有返回值,创建完成后,不能使用select语句,只能使用pl/sql块执行 一.存储函数 1.存储函数语法格式 CREATE [OR REPLACE] FUNCTION function_name [ (argment [ { IN | IN OUT } ] Type, a…
自己在学习Oracle是做的笔记及实验代码记录,内容挺全的,也挺详细,发篇博文分享给需要的朋友,共有1w多字的学习笔记吧.是以前做的,一直在压箱底,今天拿出来整理了一下,给大家分享,有不足之处还望大家批评指正. PL/SQL定义:PL/SQL是由Oracle开发,专门用于Oracle的程序设计语言. PL---Procedural Language. SQL—Structure QueryLanguage.PL/SQL包括过程化语句和SQL语句     PL/SQL的单位:块. 一个块中可以嵌套…
-- 1. 使用一个变量 declare -- Local variables here v_name ); begin -- Test statements here select t.user_name into v_name from pay_mer_order t ; dbms_output.put_line(v_name); end; -- 2. 使用多个变量 declare -- Local variables here v_name ); v_trans_no ); v_app_c…
注释 单行--多行 一.declare一般用于做变量的申明.begin 程序体开始执行  end; 程序体结束exception .. dbms_output.put_line('绝对值'||v_abs);输出语句 执行begin 之前必须先set serveroutput on;要不打印不出来 pl/sql约定俗成变量以v开头如 v_name  example:declare v_name varchar2(20)    -----变量类型为变长字符begin v_name:='myname'…
select * from protype;select * from product;---笛卡尔连接查询(交叉连接)select * from protype,product;select * from protype cross join product;---标准写法---内链接查询select * from protype pt,product pd where pt.pt_id=pd.p_type;select * from protype pt inner join product…
PL/SQL语句可以在Oracle客户端的 SQL窗口或者 command  窗口中运行 在SQL窗口中运行步骤同 SQL语句 在command  窗口中运行的步骤如下: 1)File—new command window,出现下图 2)输入命令:set serveroutput on    ,回车执行 作用:开启输出服务 3)输入命令:ed   ,回车执行 作用:打开PL/SQL文本编辑器,可以在此文本编辑器中写PL/SQL语句 4)输入命令:/   ,回车执行 作用:执行PL/SQL语句 1…
一:程序单元组成 一个PL/SQL程序单元主要包括三部分: 声明与定义部分:声明变量.常量.类型等:定义过程.函数等: 执行部分:执行PL/SQL语句:调用过程.参数:处理游标等: 异常处理部分:处理程序单元出现的异常. 二:格式 DECLARE 声明变量.常量.类型: 定义过程.函数: .... BEGIN 执行程序语句: 调用过程.函数: 处理游标: .... EXCEPTION <exception handling> END; 三:例子 DECLARE a number; b numb…
一:PL/SQL时间相关类型 PL/SQL提供两个和日期时间相关的数据类型: 日期时间(Datetime)数据类型 时间间隔类型 二:日期时间类型 datetime数据类型有: DATE TIMESTAMP TIMESTAMP WITH TIME ZONE TIMESTAMP WITH LOCAL TIME ZONE 三:时间间隔类型 INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND 四:日期时间类型 和  时间间隔类型  的可能字段 字段名称 有效日期…
一:包 包是由一组相关的函数,过程,变量,游标等PL/SQL程序设计元素的组合而成的一个PL/SQL程序单元,相当于Java中的类. 包的主要作用是封装:把相同或相似的东西归类,方便维护和管理,提高开发效率,提高性能. 二:包的开发 包的开发包括两部分:包的声明定义  和  包的主体开发. 包的声明定义:声明  类型,变量,常量,异常,游标,函数,过程(声明,但不实现!) ,在包的声明部分定义的变量是公有变量(public),可以在包外通过  包名.变量名  引用. 包的主体开发:在包的主体对…
一:PL/SQL集合 集合是一个有序且存有相同的类型数据的数据结构. PL/SQL提供了三种集合类型: 索引表(关联数组) 嵌套表 数组 二:索引表:一个索引表(也叫关联数组)是一组键 - 值对.每个键是唯一的,并且用于定位对应的值.键可以是整数或字符串.[其实就是 Map类型] 1)创建索引表 TYPE type_name IS TABLE OF element_type [NOT NULL] INDEX BY subscript_type; //定义索引表类型:指明值类型和键类型 table…
一:异常 程序执行过程中出现错误情况被称为异常,主要有两种类型的异常: 系统定义的异常 用户定义的异常 二:系统定义的异常 Exception Oracle Error SQLCODE 描述 ACCESS_INTO_NULL 06530 -6530 为空对象赋值时引发 CASE_NOT_FOUND 06592 -6592 没有相应的选择语句时引发异常 COLLECTION_IS_NULL 06531 -6531 数组.集合未初始化却被使用时引发异常 DUP_VAL_ON_INDEX 00001…
一:游标 Oracle会创建一个上下文区域,用于处理SQL语句,其中包含需要处理的语句.处理结果等等. 游标指向这一上下文的区域. PL/SQL通过控制游标在上下文区域移动,来获取SQL语句的结果信息. 有两种类型的游标: 隐式游标 显式游标 二:隐式游标 对于DML操作(INSERT.UPDATE.DELETE)语句,Oracle会自动创建隐式游标指向该语句的上下文区域. 对于隐式游标,我们无法通过游标名来显式操作它,但是可以通过一些通用的属性来获取到最近的隐式游标指向的上下文区域中的信息,主…
一:记录 记录是一种高可以容纳不同数据类型的数据的数据结构. PL/SQL可以处理记录的以下几种类型: 基于数据表 基于游标的记录 用户自定义的记录 二:使用 %ROWTYPE属性 创建基于表格或基于游标的记录[基于表.游标的记录  其实就是  数据表的一行]    1)基于表的记录 DECLARE customer_rec customers%rowtype;//创建基于表的记录 BEGIN SELECT * into customer_rec //把唯一的检索结果存到记录 FROM cust…
一:变量 1:变量声明与初始化 variable_name datatype(约束) [:= | DEFAULT 初始值] 如: sales , ); name ); a ; greetings ) DEFAULT 'Have a Good Day'; 2:变量的使用 通过变量名来使用. 3:用变量接收SQL语句结果 SELECT 列1,列2... INTO 变量1,变量2... 二:常量 1:常量声明 常量使用CONSTANT关键字声明.它需要一个初始值,并且不允许被改变该值.如: PI CO…
一:标量 标量 即 基本数据类型,主要有4种:数值.字符.布尔类型.日期时间. 1:数值类型 数据类型 描述 PLS_INTEGER 通过2,147,483,647到-2147483648范围内有符号整数,以32位表示 BINARY_INTEGER 通过2,147,483,647到-2147483648范围内的有符号整数,以32位表示 BINARY_FLOAT 单精度IEEE 754格式的浮点数 BINARY_DOUBLE 双精度IEEE 754格式的浮点数 NUMBER(prec, scale…
一:PL/SQL程序块 PL/SQL是一种块结构的语言,一个PL/SQL程序就是一个 代码逻辑块. PL/SQL程序由三部分构成: 1 声明 部分 使用关键字DECLARE开头,它是一个可选的部分,用于声明与赋初值在该程序中使用的  所有变量,游标,子程序,和其他元素. 2 可执行命令 部分 使用关键字BEGIN和END包裹,必须有.定义了一系列 PL/SQL语句  . 3 异常处理 部分 使用关键字EXCEPTION,可选,用于处理可执行命令部分捕获的异常. 二:基本格式 DECLARE <d…
在 PL/SQL 程序中,对于处理多行记录的事务经常使用游标来实现. 为了处理 SQL 语句, ORACLE 必须分配一片叫上下文( context area )的区域来处理所必需的信息,其中包括要处理的行的数目,一个指向语句被分析以后的表示形式的指针以及查询的活动集(active set). 游标是一个指向上下文的句柄( handle)或指针.通过游标, PL/SQL 可以控制上下文区和处理语句时上下文区会发生些什么事情. 1.处理显示游标 处理显示游标有4个步骤: (1)定义游标: CURS…
PL/SQL语句可以在Oracle客户端的 SQL窗口或者 command  窗口中运行 在SQL窗口中运行步骤同 SQL语句 在command  窗口中运行的步骤如下: 1)File—new command window,出现下图 2)输入命令:set serveroutput on    ,回车执行 作用:开启输出服务 3)输入命令:ed   ,回车执行 作用:打开PL/SQL文本编辑器,可以在此文本编辑器中写PL/SQL语句 4)输入命令:/   ,回车执行 作用:执行PL/SQL语句 1…
-----创建一个序列,再创建一个表(主键是数字),通过序列生成该表的主键值. create table mytb1( m_id number primary key, m_name ) not null ) create sequence myseq2 start increment nomaxvalue nocycle cache ; declare i integer; begin i :; loop insert into mytb1 values(myseq2.nextval,'德玛西…
Procedure Language/Structure query Language 一.关于语言学习 1.数据类型 2.语法   通过例子来学习很快就能明白 set serverputout on: begin dbms_output.put_line(‘HelloWorld!’): end: 二.结构(declare(可选).begin.exception(可选).end) 1.declare例子 declare v_name varchar2(20); begin v_name := '…
一.什么事存储过程 可以将存储过程看做是一组完成某个特定功能的SQL语句的集合. 例如有一个转账功能(A向B转账50),先将账户A中金额扣除50,然后将账户B中金额添加50. 那么我们可以定义一个名为转账的存储过程,将这些SQL语句组合在一次. 使用时直接调用这个存储过程就可以了,这样将操作封装起来,提高了可用性. 后续也便于管理. 可以将存储过程看做编程语言中的方法,只要把方法定义好了后,以后直接调用即可. 二.创建存储过程 DELIMITER // CREATE PROCEDURE 存储过程…
一:触发器响应的事件 数据库操作(DML)语句(DELETE,INSERT,UPDATE) 数据库定义(DDL)语句(CREATE,ALTER或DROP) 数据库操作(SERVERERROR,登录,注销,启动或关机) 二:创建触发器 CREATE [OR REPLACE ] TRIGGER trigger_name {BEFORE | AFTER | INSTEAD OF } {INSERT [OR] | UPDATE [OR] | DELETE} [OF col_name] ON table_…
1.定义基本变量: 2.引用型的变量: set serveroutput on   declare pename emp.ename%type; psal emp.sal%type;   begin select ename,sal into pename,psal from emp where empno='7521';   dbms_output.put_line(pename||'的薪水是'||psal);   end; / 3.记录型变量: set serveroutput on   d…
例:假设员工表中有若干记录重复,请删除重复的记录(某企业面试题) ------模拟建表 create table employee( e_id varchar2(20) primary key, e_name varchar2(50) not null, e_sex char(2) check(e_sex in('男','女')), e_age integer ) insert into employee values('e001','Frank_Lei','男',20); insert int…
一:事务自动提交的开启与关闭 1)开启事务自动提交:则每一个INSERT,UPDATE或DELETE命令执行时,都提交一次事务. SET AUTOCOMMIT ON; 2)关闭事务自动提交:则执行到COMMIT语句时,才将事务提交. SET AUTOCOMMIT OFF; 二:保存点:在需要创建保存点的地方,创建一个 SAVEPOINT 变量. INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) , , 'HP', 9500.00 ); INSE…
一:函数 函数与过程的最大不同就是,函数有返回值.适用于需要返回结果的场景. 二:创建函数 CREATE [OR REPLACE] FUNCTION function_name [(parameter_name [IN | OUT | IN OUT] type [, ...])] RETURN return_datatype {IS | AS} 变量声明...; BEGIN < function_body > return 结果; END [function_name]; 三:调用函数 res…
一:基本循环 LOOP 循环体: 退出循环: )IF condition THEN exit; END IF; ) exit WHEN condition; END LOOP; 二:WHILE循环 WHILE condition LOOP sequence_of_statements END LOOP; 三:FOR循环 正向FOR循环:从小值到大值迭代 FOR counter IN initial_value .. final_value LOOP sequence_of_statements;…
一:IF-THEN语句 IF (condition) THEN commands; END IF; 二:IF-THEN_ELSE语句 IF (condition) THEN S1; ELSE S2; END IF; 三:IF-THEN—ELSEIF—ELSE )THEN S1; ELSIF( boolean_expression ) THEN S2; ELSIF( boolean_expression ) THEN S3; ELSE S4; END IF; 四:CASE语句 CASE selec…