oracle PLSQL 程序设计

合集下载

plsql存储过程写法

plsql存储过程写法

plsql存储过程写法存储过程是在数据库中创建的一种可重用的程序,它由一系列SQL语句和控制结构组成。

存储过程可以简化复杂的数据库操作,提高数据库的性能,并使数据库操作更加安全和可靠。

在Oracle数据库中,PL/SQL(Procedural Structured Query Language)是用于创建和管理存储过程的编程语言。

本文将介绍如何编写PL/SQL存储过程。

一、存储过程的创建要创建存储过程,首先需要打开Oracle数据库的PL/SQL开发环境,例如SQL Developer。

然后,可以使用以下语法创建一个简单的存储过程:```plsqlCREATE PROCEDURE procedure_name ISBEGIN-- SQL语句和过程逻辑END;```其中,`procedure_name`是你要创建的存储过程的名称。

在`BEGIN`和`END`之间的部分是存储过程的主体,其中可以包含SQL语句和控制结构。

二、参数和输入输出参数存储过程可以接受参数,以提高重用的灵活性和便利性。

可以使用`IN`和`OUT`关键字来定义输入和输出参数。

以下是一个带有输入和输出参数的存储过程的示例:```plsqlCREATE PROCEDURE procedure_name(IN parameter_name datatype, OUT parameter_name datatype) ISBEGIN-- 使用参数进行操作END;```在上述示例中,`parameter_name`是参数的名称,`datatype`是参数的数据类型。

在存储过程的主体中,可以访问和使用这些参数,而不需要从过程外部显式地传递它们。

输出参数可以用来将结果返回给调用者。

三、调用存储过程创建存储过程后,可以通过调用它来执行其中的SQL语句和控制结构。

可以使用以下语法调用存储过程:```sqlCALL procedure_name(parameter_value);```其中,`parameter_value`是传递给存储过程的参数值。

plsql用法,操作介绍

plsql用法,操作介绍

plsql用法,操作介绍PL/SQL是Oracle数据库中一种重要的编程语言,它提供了强大的数据处理和数据库操作能力。

本文将向大家介绍PL/SQL的用法和操作。

一、PL/SQL基础PL/SQL是一种过程化的编程语言,它可以在Oracle数据库中执行存储过程、函数、触发器和包等对象。

这些对象可以由用户自定义,并在数据库中存储,以供其他用户调用。

PL/SQL提供了丰富的数据类型、控制结构、函数和过程,使得开发者可以方便地编写复杂的数据库操作程序。

二、PL/SQL语法1. 声明语句:在PL/SQL中,需要先声明变量和常量,常见的声明语句有:变量声明(如:变量类型数据类型;),常量声明(如:CONST 常量名数据类型 = 值)。

2. 条件语句:PL/SQL支持多种条件语句,如IF-THEN-ELSE,CASE表达式等。

3. 循环语句:PL/SQL支持FOR循环、WHILE循环和LOOP循环等。

4. 异常处理:PL/SQL提供了异常处理机制,可以捕获和处理运行时出现的错误。

5. 函数和过程:PL/SQL支持定义函数和过程,可以对数据进行操作并返回结果。

三、PL/SQL操作1. 创建存储过程:可以使用CREATE PROCEDURE语句创建存储过程,指定过程的名称、参数和执行逻辑。

2. 调用存储过程:可以使用CALL语句调用存储过程,并传递参数。

3. 创建函数:可以使用CREATE FUNCTION语句创建函数,指定函数的名称、参数和返回值类型。

4. 调用函数:可以使用直接调用函数的方式或通过存储过程调用函数。

5. 创建触发器:可以使用CREATE TRIGGER语句创建触发器,用于在数据插入、更新或删除时触发特定的操作。

6. 修改和删除对象:可以使用ALTER PROCEDURE、DROP PROCEDURE、DROP FUNCTION等语句修改或删除已存在的PL/SQL对象。

四、示例以下是一个简单的PL/SQL程序示例,用于将输入的字符串转换为大写并输出:```plsqlDECLAREv_str VARCHAR2(100);v_upper VARCHAR2(100);BEGIN-- 获取输入字符串:in_str := 'hello world';v_str := :in_str;-- 将字符串转换为大写并输出v_upper := UPPER(v_str);DBMS_OUTPUT.PUT_LINE('转换后的字符串为: ' || v_upper);END;```在上述示例中,我们使用了DECLARE语句声明了两个变量v_str 和v_upper,分别用于存储输入的字符串和转换后的结果。

plsql developer 用法

plsql developer 用法

PL/SQL Developer是一个集成开发环境,专门用于Oracle PL/SQL程序设计。

以下是如何使用PL/SQL Developer的简要说明:
打开PL/SQL Developer并登陆,选择要连接的数据库。

在对象浏览器窗口界面中,找到“my object”,此处为当前登陆的用户的所有object。

在“my object”里,找到“table”文件夹,里边显示了当前账户的所有表格。

选中需要查看的表,右键点击,选中“查询数据”,即可查看数据。

打开sql window,即可在此窗口内输入sql语句,全选后点击执行即可看到结果。

选中表,右键点击,可以编辑对表进行编辑。

以上信息仅供参考,具体用法可能会因版本和具体需求略有不同。

如果在使用过程中遇到问题,建议查阅PL/SQL Developer的官方文档或寻求专业人士的帮助。

精通 oracle 10g plsql 编程-学习笔记

精通 oracle 10g plsql 编程-学习笔记

1.PL/SQL综述本章学习目标,了解如下内容:PL/SQL的功能和作用PL/SQL 的优点和特征;Oracle 10g、Oracle9i 的PL/SQL新特征1.1.SQL简介1.1.1.SQL语言特点SQL语言采用集合操作方式1.1.2.SQL语言分类●数据查询语言(SELECT语句):检索数据库数据。

●数据操纵语言(DML):用于改变数据库数据。

包括insert,update和delete三条语句。

●事务控制语言(TCL):用于维护数据库的一致性,包括commit,rollback和savepoint 三条语句●数据定义语言(DDL):用户建立、修改和删除数据库对象。

●数据控制语言(DDL):用于执行权限授予和收回操作。

包括grant 和revoke两条命令。

1.1.3.SQL 语句编写规则●SQL关键字不区分大小写●对象名和列名不区分大小写●字符值和日期值区分大小写●书写格式随意1.2.PL/SQL简介1.3.Oracle 10G PL/SQL 新特征2.PL/SQL开发工具本章学习目标:学会使用SQL*PLUS学会使用PL/SQL developer;学会使用Procedure Builder。

2.1.SQL*PLUS在命令行运行SQL*PlusSqlplus [username]/[password] [@server]3.PL/SQL 基础学习目标:●了解PL/SQL块的基本结构以及PL/SQL块的分类;●学会在PL/SQL块中定义和使用变量●学会在PL/SQL块中编写可执行语句;●了解编写PL/SQL代码的指导方针;●了解Oracle 10g的新特征——新数据类型BINARY_FLOAT 和BINARY_DOUBLE,以及指定字符串文本的新方法。

3.1.PL/SQL 块简介3.1.1.PL/SQL块结构3.1.2.PL/SQL 块分类匿名块命名块子程序触发器3.2. 定义并使用变量3.2.1.标量变量3.2.2.复合变量3.2.3.参照变量3.2.4.LOB 变量3.2.5.非PL/SQL 变量3.3.编写 PL/SQL 代码3.3.1.PL/SQL 词汇单元分隔符标识符文本(数字文本,字符文本,字符串文本,布尔文本,日期时间文本)注释3.3.2.PL/SQL 代码编码规则标识符命名规则大小写规则代码缩进嵌套块和变量范围PL/SQL中可以使用的SQL函数4.使用SQL语句学习目标:学会使用SELECT语句去完成基本查询功能学会使用INSERT,UPDA TE和DELETE语句去操作数据库数据学会使用COMMIT,ROLLBACK和SA VEPOINT语句去控制事务学会使用SELECT语句去实现各种复杂查询功能(数据分组、连接查询、子查询、层次查询、合并查询等)4.1.使用基本查询处理NULL:函数nvl(expr1,expr2),nvl2(expr1,expr2,expr3)4.2.使用DML语句使用多表插入数据语法:INSERT ALL insert_into_clause [value_clause] subquery;INSERT conditional_insert_clause subquery;示例1:使用ALL 操作符执行多表插入INSERT ALLWHEN deptno=10 THEN INTO dept10WHEN deptno=20 THEN INTO dept20WHEN deptno=30 THEN INTO dept30WHEN job=’CLERK’ THEN INTO clerkELSE INTO otherSelect * from emp;示例2:使用FIRST 操作符执行多表插入INSERT FIRSTWHEN deptno=10 THEN INTO dept10WHEN deptno=20 THEN INTO dept20WHEN deptno=30 THEN INTO dept30WHEN job=’CLERK’ THEN INTO clerkELSE INTO otherSELECT * FROM emp;4.3.使用事务控制语句4.3.1.事务和锁4.3.2.提交事务4.3.3.回退事务设置保存点:savepoint a;或者exec dbms_transaction.savepoint(‘a’)取消部分事务Rollback to a;或者Exec dbms_transaction.rollback_savepoint(‘a’)取消全部事务:Rollback; 或者exec dbms_transaction.rollback() 4.3.4.只读事务4.3.5.顺序事务4.4.数据分组4.4.1.分组函数MaxMinAvgSumCountVarianceStddev使用分组函数注意事项:●当使用分组函数时,除了函数Count(*) 之外,其他分组函数都会忽略NULL行。

plsql的注册方法

plsql的注册方法

plsql的注册方法1.简介在O ra cl e数据库中,P L/SQ L是一种程序设计语言,它是在S QL语言的基础上添加了过程性编程的能力。

在PL/SQ L中,我们可以定义存储过程、函数和触发器等,以实现更复杂的业务逻辑和数据处理操作。

本文将介绍在P L/SQ L中的注册方法和使用技巧,帮助您更好地理解和应用P L/S QL。

2. PL/SQL的注册过程在使用P L/SQ L之前,我们需要在数据库中注册我们编写的PL/SQ L程序,以便可以在其他程序或者数据库操作中调用和执行。

下面是P L/SQ L 的注册过程:2.1创建P L/S Q L程序首先,我们需要在数据库中创建我们的PL/SQ L程序。

可以使用O r ac le的开发工具如S QL De ve lo pe r或者PL/S QL De ve lop e r来创建程序,也可以在SQ L*Pl u s命令行工具中使用C RE AT EP RO CE DU RE或者C R EA TE FU NC TI ON语句来创建。

2.2编译P L/S Q L程序创建完成后,我们需要对PL/S QL程序进行编译。

编译的过程会检查程序的语法、语义等错误,并生成可以直接执行的二进制代码。

我们可以使用AL TE RP RO CE DUR E或A LT ER FU NC TIO N语句对程序进行编译。

2.3注册P L/S Q L程序编译完成后,我们需要在数据库中注册我们的PL/S QL程序,以便可以被其他程序或者数据库操作调用和执行。

可以使用C R EA TE OR RE PL AC EPR O CE DU RE或C RE ATE O RR EP LA CE FU NC TIO N语句来注册程序。

创建或替换的过程将会在数据库中创建或更新相应的元数据。

2.4授权P L/S Q L程序在注册完成后,我们还需要为我们的P L/S Q L程序授权,以便其他用户或者角色能够调用和执行它。

Oracle PLSQL程序设计(第6版)(上下册)

Oracle PLSQL程序设计(第6版)(上下册)

9 数字
01
02
03
04
9.1 数值型 数字类型
9.2 数字转 换
9.3 数字运 算符
9.4 数字函 数
9 数字
9.1 数值型数字类型
9.1.1 NUMBER类型 9.1.2 PLS_INTEGER类型 9.1.3 BINARY_INTEGER类型 9.1.4 SIMPLE_INTEGER类型 9.1.5 BINARY_FLOAT和BINARY_DOUBLE类型 9.1.6 SIMPLE_FLOAT和SIMPLE_DOUBLE类型 9.1.7 数字子类型
第3部分 PL/SQL程序数据
04
7 使用程序数据
7.1 程序数据 的命名
A
7.2 PL/SQL 数据类型概述
B
7.3 程序数据 的声明
C
7.4 程序员定 义的子类型
D
7.5 数据类型 转换
E
7 使用程序数据
7.2 PL/SQL数据类型概 述
7.2.1 字符数据 7.2.2 数字 7.2.3 日期、时间戳和时 间间隔 7.2.4 布尔类型 7.2.5 二进制数据类型
10.6 时间间隔的转换
10.6.1 从数字到时间间隔的转换 10.6.2 把字符串转换成间隔 10.6.3 时间间隔的格式化显示
10 日期和时间戳
10.8 CAST和EXTRACT
10.8.1 CAST函数 10.8.2 EXTRACT函数
10 日期和时间戳
10.9 日期时间的算法
10.9.1 时间间隔和日期时间的算法 10.9.2 DATE数据类型的日期算法 10.9.3 计算两个日期时间之间的时间间隔 10.9.4 DATE和TIMESTAMP混合计算 10.9.5 时间间隔的加减运算 10.9.6 时间间隔的乘除运算 10.9.7 使用不受限制的时间间隔类型

plsql使用教程

plsql使用教程

plsql使用教程PL/SQL是Oracle数据库的过程式编程语言,它结合了SQL的强大查询能力和程序设计语言的灵活性。

以下是一个简单的PL/SQL使用教程:1. 定义变量在PL/SQL中,可以使用DECLARE语句来定义变量。

例如:DECLAREnum INTEGER;name VARCHAR2(50);2. 使用SELECT查询数据可以使用SELECT语句从表中检索数据。

例如:SELECT * INTO num, name FROM employees WHERE employee_id = 100;3. 使用IF-THEN-ELSE进行条件判断PL/SQL提供了IF-THEN-ELSE语句来进行条件判断。

例如:IF num > 0 THENDBMS_OUTPUT.PUT_LINE('Number is positive');ELSEDBMS_OUTPUT.PUT_LINE('Number is negative');END IF;4. 使用FOR循环可以使用FOR循环来对一个集合进行迭代。

例如:FOR i IN 1..10 LOOPDBMS_OUTPUT.PUT_LINE('The value of i is: ' || i);END LOOP;5. 创建存储过程可以使用CREATE PROCEDURE语句来创建存储过程。

例如:CREATE PROCEDURE get_employee_details (p_employee_idIN NUMBER) ISv_employee_name VARCHAR2(50);BEGINSELECT employee_name INTO v_employee_name FROM employees WHERE employee_id = p_employee_id;DBMS_OUTPUT.PUT_LINE('Employee name is: ' ||v_employee_name);END;6. 调用存储过程可以使用EXECUTE语句来调用存储过程。

plsql连接oracle配置

plsql连接oracle配置

PL/SQL连接Oracle配置
介绍
PL/SQL是一种针对Oracle数据库开发的过程性编程语言,可以用于创建存储
过程、函数和触发器等对象。

要使用PL/SQL连接Oracle数据库,需要进行一些
配置。

本文将介绍如何配置PL/SQL连接Oracle数据库。

步骤
步骤1:安装Oracle客户端
在连接Oracle数据库之前,需要先安装Oracle客户端。

Oracle客户端是连接Oracle数据库的驱动程序,在连接数据库时需要使用。

首先,从Oracle官方网站
下载合适的Oracle客户端版本,然后按照安装向导进行安装。

步骤2:配置Oracle客户端
安装完Oracle客户端后,需要进行一些配置以确保连接能够成功。

以下是必要的配置项:
•ORACLE_HOME:指定Oracle客户端的安装目录。

需要将ORACLE_HOME设置为安装目录的路径,以便PL/SQL可以找到需要的文件。

•PATH:将Oracle客户端的bin目录添加到系统的PATH环境变量中,以便PL/SQL能够找到Oracle客户端的可执行文件。

•TNS_ADMIN:设置TNS_ADMIN环境变量为一个目录的路径,在该目录下应该包含一个名为tnsnames.ora的文件,该文件包含了要连接的
Oracle数据库的连接信息。

步骤3:创建数据库连接
在PL/SQL中,可以通过创建一个数据库连接来连接Oracle数据库。

以下是创
建数据库连接的步骤:
1.打开PL/SQL开发工具,如PL/SQL Developer或SQL Developer。

2.单击工具栏上的。

利用PLSQL创建Oracle数据库User用户并设置权限

利用PLSQL创建Oracle数据库User用户并设置权限

在PLSQL中创建Oracle数据库Users用户并设置权限
1、首先在PLQL Developer 中打开数据库。

使用"sys" 用户,输入数据库名称,输入该数
据库”sys”用户的密码sysdba,在”Connect as”组合框中选中“SYSDBA”。

单击OK 按钮打开数据库。

2、创建”User”型用户“DXXFLD”。

找到“Users”文件夹,右键弹出菜单中,选中”New”,
弹出用户创建界面:
在其中输入要添加的用户名”DXXFLD”,并作其他设置如下:
户名连接到数据库。

然后通过“Quotas”选项卡设置用户权限:将“Tablespace”中选中“User”, 勾选“Unlimited”复选项(这个一定要选中啊,不然创建表的时候会提示没有表空间的访问权限
的)。

最后单击”Apply”按钮使各项设置起作用。

2、使用新创建的用户创建表。

在”Tables”文件夹上右键单击,选中弹出菜单中“New”选

在之后弹出属性页下,做如下设置:
然后再设置字段名等其他属性就和直接用“System”或“Sys”等表空间创建表一样了。

要说明的是使用自定义”Users”创建的表,其在PLSQL 中“Users“->”Tables”目录下才
可见。

ORACLE+PLSQL创建数据库步骤

ORACLE+PLSQL创建数据库步骤

一:遵循如下步骤创建一个数据库:错误!未找到引用源。

1.作为管理组小组登录到您的计算机上,此小组有权限安装 Oracle 软件并创建和运行数据库。

错误!未找到引用源。

2.如下所示在 Windows 操作系统时启动 DBCA:Start > Programs > O-racle - home_name > Configuration and Migration Tools > Database Configuration Assistant在提示符处输入如下命令在 UNIX 操作系统启动 DBCA:dbca错误!未找到引用源。

3.出现Welcome页面。

单击Next。

错误!未找到引用源。

4.在Operations窗口选择Create a Database,开始一个调查,使您可以配置并创建数据库。

单击Next。

错误!未找到引用源。

5.在Database Templates 页面上,选择创建数据库使用的数据库模板类型。

您可以单击Show Details查看每种数据库类型的配置。

选择适合于您的数据库将支持的工作负载的类型的模板。

如果您不确定,选择默认的General Purpose模板。

单击Next。

错误!未找到引用源。

6.在Database Identification 页面,输入Global Database Name和SID。

单击Next。

错误!未找到引用源。

7.出现Management Options页面。

为了使用 Enterprise Manager,选择Configure the Database with Enterprise Manager。

选择Use Database Control for Database Managemen t 以本地管理您的数据库或选择适合您的配置的Use Grid Control for Database Management。

单击Next。

Oracle中使用PLSQL使用动态SQL语句实现数据处理实例

Oracle中使用PLSQL使用动态SQL语句实现数据处理实例

使用动态SQL语句实现数据处理实例
主要语句: 1.删除同名临时表语句,及执行语句
v_SQLStr:='DROP TABLE temptable'; EXECUTE IMMEDIATE v_SQLStr; 2.创建临时ห้องสมุดไป่ตู้语句,及执行语句 v_SQLStr:='CREATE TABLE temptable (id INT NOT NULL PRIMARY KEY,tmpname VARCHAR2(100))'; EXECUTE IMMEDIATE v_SQLStr;
使用动态SQL语句实现数据处理实例
使用动态SQL语句实现数据处理实例
执行结果:
使用动态SQL语句实现数据处理实例
主要语句: 3.向临时表插入数据语句,及执行语句
v_SQLStr:='INSERT INTO temptable VALUES(10,''临时名称1'')'; EXECUTE IMMEDIATE v_SQLStr; 4.查询语句,及执行语句 v_SQLStr:='SELECT * FROM temptable WHERE id=:tempId'; EXECUTE IMMEDIATE v_SQLstr INTO v_Id,v_Name USING &1;
Oracle中使用PL/SQL 使用动态SQL语句实现数据处理实例
动态SQL
• 动态SQL是指运行时由字符串拼合而成的SQL • 可使用 EXECUTE IMMEDIATE来执行动态SQL语句
使用动态SQL语句实现数据处理实例
要求: 动态创建一个临时表,向这个表中插入数据,然后查询表中的数据,

oracle plsql函数写法

oracle plsql函数写法

Oracle PL/SQL是一种强大的数据库编程语言,它允许开发人员在Oracle数据库中创建复杂的存储过程、函数和触发器。

在本文中,我将共享一些关于Oracle PL/SQL函数写法的基本知识和最佳实践。

1. 函数的基本语法在Oracle PL/SQL中,函数是一种可重用的代码单元,它接受输入参数并返回一个值。

函数的基本语法如下所示:```sqlCREATE [OR REPLACE] FUNCTION function_name(parameter1 datatype, parameter2 datatype, ...)RETURN return_datatypeISvariable declarationsBEGINexecutable statements[EXCEPTIONexception handlers]END;```在上面的语法中,`function_name`是函数的名称,`parameter1`、`parameter2`等是函数的参数,`return_datatype`是函数返回的数据类型。

2. 编写一个简单的函数示例下面是一个简单的函数示例,它接受两个参数并返回它们的和:```sqlCREATE OR REPLACE FUNCTION add_numbers(a NUMBER, b NUMBER)RETURN NUMBERISsum NUMBER;BEGINsum := a + b;RETURN sum;END;```在上面的示例中,函数名称为`add_numbers`,它接受两个`NUMBER`类型的参数`a`和`b`,返回值也是一个`NUMBER`类型的值。

3. 函数参数的传递方式在Oracle PL/SQL中,函数的参数可以按照值传递或引用传递的方式传递。

按值传递意味着函数接收实际参数的值,而按引用传递意味着函数接收实际参数的位置区域。

在函数定义中,参数可以声明为`IN`、`OUT`和`IN OUT`。

Oracle_PLSQL教程-第五章

Oracle_PLSQL教程-第五章
• REPLACE 选项删除并重新创建包体 • 仅在包体中定义的标识符是私有结构在包的外部不可见 • 所有的私有结构必须在它们被用于公共结构之前被声明
5­11
Copyright © Oracle Corporation, 2001. All rights reserved.
创建包体
为了创建包,在包体中定义所有公共和私有结构。
§ 如果包体已经存在,指定 REPLACE 选项。 § 在包体中子程序的定义顺序很重要:你必须在一个变量被引用之前先声明它,
同样,在一个私有子程序被调用之前你必须先声明它。通常的做法是在包体中
先定义私有变量和子程序,后定义公共子程序。
语法解说
在包中定义所有公共和私有过程与函数。
参数
说明
package_name
Oracle PL/SQL 编程 5­4
第五章 创建包
包声明 包体
引用包对象
过程 A 声明
公共变量 公共过程
过程 B 声明
私有变量 私有过程
过程 A 定义
公共过程
局部变量
5­5
Copyright © Oracle Corporation, 2001. All rights reserved.
包的开发 (续) 结构的可见性 Local
第五章 创建包
翻译:陈拓 chentuo@ 2006 年 6 月 16 日
创建包
Copyright © Oracle Corporation, 2001. All rights reserved.
进度表:
时间 40 分钟练习 总共
Oracle PL/SQL 编程 5­1
• REPLACE 选项删除并重新创建包声明 • 在包声明中的变量声明默认情况下被初始化 NULL • 在包声明中的所有被声明的结构对于已授权的用户都是

PLSQL程序设计(Oracle)_教程宋红康_oracle_sql_plsql

PLSQL程序设计(Oracle)_教程宋红康_oracle_sql_plsql

PLSQL程序设计(Oracle)_教程宋红康_oracle_sql_plsql 学完了,做个⼩总结,也当做复习⼀下掌握Oracle数据库,阅读起来会顺畅⼀些什么是PL/SQL?PL/SQL全称Procedure Language & Structured Query LanguagePL/SQL是Oracle对sql语⾔的过程化扩展指在SQL命令语⾔中增加了过程处理语句(如分⼦、循环等),使SQL语⾔具有过程处理能⼒(就是对SQL语⾔储存过程语⾔的扩展) PL/SQL程序结构declare --程序的声明部分(声明变量,声明游标,声明例外等)begin --程序的执⾏部分(打印输出,if,循环等)exception --异常处理机制(plsql程序遇到错误对⾃动停⽌运⾏,提前写好exception语句则会正常执⾏完毕) --如没有异常处理机制通常省略这段代码(学习过程中基本不会⽤到)end;变量声明规则:⽰例: Hello Worldset serveroutput on; --每次第⼀次使⽤需要这条命令开启plsql程序declare--声明部分,⽤于声明某些变量,记录类型,游标等begin--程序的执⾏部分,dbms_output.put_line('Hello World');end;⽰例: 查询员⼯号(employe_id)为100的员⼯的⼯资(salary)declare--声明变量v_sal number(8,2);begin--select语句;格式: select...into...select salary into v_sal from employees where employee_id =100;--打印输出结果dbms_output.put_line(v_sal);end;。

Oracle_PLSQL教程-第一章

Oracle_PLSQL教程-第一章
并增加代码的易读性
1­6
Copyright © Oracle Corporation, 2001. All rights reserved.
子程序概览 子程序是基于标准的 PL/SQL 结构的,该结构包括一个声明部分,一个可执行部
分,和一个可选的异常处理部分。 子程序可以被编译和存储在数据库中。它提供模块性,可扩展性,可重用性和可维
第一章 PL/SQL 子程序概览
翻译:陈拓 chentuo@ 2006 年 6 月 16 日
PL/SQL 子程序概览
Copyright © Oracle Corporation, 2001. All rights reserved.
进度表:
时间 40 分钟 25 分钟 65 分钟
Object types
<header> IS|AS or DECLARE 。。。
BEGIN 。。。
EXCEPTION 。。。
END;
Database Server Constructs
Anonymous blocks
Stored procedures or functions
Stored packages
§ 在 EXCEPTION 和 END 之间的异常部分是可选的。这部分捕获预先定义的错 误条件。在这一部分中,你定义如果指定的错误条件发生时要采取的行为。
Oracle PL/SQL 编程 1­8
第一章 PL/SQL 子程序概览
PL/SQL 子程序
­­­­­ ­­­ ­­­ ­­­ ­­­­­ ­­­ ­­­ ­­­ xxx xxx xxx xxx xxx xxx ­­­­­ ­­­ ­­­ ­­­ ­­­­­ ­­­ ­­­ ­­­ ­­­­­ ­­­ ­­­ ­­­ xxx xxx xxx xxx xxx xxx ­­­­­ ­­­ ­­­ ­­­ ­­­­­ ­­­ ­­­ ­­­ xxx xxx xxx xxx xxx xxx ­­­­­ ­­­ ­­­ ­­­ ­­­­­ ­­­ ­­­ ­­­ ­­­­­ ­­­ ­­­ ­­­

(完整word版)实验二 PL SQL编程实验报告(word文档良心出品)

(完整word版)实验二 PL SQL编程实验报告(word文档良心出品)

湖南第一师范学院信息科学与工程系实验报告课程名称:ORACLE数据库系统及应用成绩评定:实验项目名称:实验二:PL/SQL编程指导教师:学生姓名:学号:专业班级:实验项目类型:设计实验地点:实验时间:年月日一、实验目的与要求:1、掌握PL/SQL 程序设计的基本知识;2、掌握PL/SQL 中SELECT 语句和DML 语句的正确使用方法;3、掌握存储过程、函数、游标、触发器与包的创建与使用。

二、实验环境:(硬件环境、软件环境)1.硬件环境:奔ⅣPC。

2.软件环境:Windows2000 操作系统,Oracle 9i。

三、实验内容:(原理、操作步骤、程序代码等)任务:1、编写存储过程,根据用户输入的部门编号实现在PL/SQL 中逐行显示emp 表中该部门员工的工资级别。

工资级别是:当工资为空时,为空,工资在1000 元以下的为‘低’,在1000 和3000之间的为‘中’,高于3000 元的为‘高’。

要有异常处理(该部门编号不存在)。

create or replace procedure review_ep(v_deptno in dept.deptno%type)iscursor c1is select * from empwhere emp.deptno=v_deptno;record1emp%rowtype;deptno_not_found exception;beginopen c1;fetch c1into record1;if(not c1%found) then raise deptno_not_found;end if;while c1%found loopif nvl(record1.sal,0)<1000thendbms_output.put_line(record1.ename||'工资低');elsif nvl(record1.sal,0)<3000thendbms_output.put_line(record1.ename||'工资中等');elsedbms_output.put_line(record1.ename||'工资高');end if;fetch c1into record1;end loop;close c1;exception when deptno_not_found thendbms_output.put_line('deptno not found');end;2.有这么一张表temp1,他只有一个number(8)的字段no,由于在创建表时忘记设置主键约束,导致表中有很多重复的记录。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PL/SQL 程序设计
一、实验目的
1.掌握PL/SQL的编写方法;
2.掌握PL/SQL的基本语法、控制结构、游标、异常处理和存储
子程序。

二、实验内容和要求
1、教程第363页,实训题第1到8小题(写出所有命令);
三、实验步骤
(1)
DECLARE
CURSOR c_emp IS select * from emp;
BEGIN
FOR v_emp IN c_emp LOOP
DBMS_OUTPUT.PUT_LINE(v_emp.ename||' '||v_emp.empno||'
'||v_emp.deptno||' '||v_emp.sal);
END LOOP;
END;
(2)
DECLARE
v_emp emp%ROWTYPE;
BEGIN
SELECT * INTO v_emp FROM EMP WHERE ename='SMITH';
DBMS_OUTPUT.PUT_LINE(v_emp.empno||' '||v_emp.sal||'
'||v_emp.deptno);
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO EMP(EMPNO,ENAME,SAL,DEPTNO)
VALUES(2007,'SMITH',1500,10);
WHEN TOO_MANY_ROWS THEN
FOR v IN (SELECT * FROM EMP WHERE ENAME='SMITH') LOOP DBMS_OUTPUT.PUT_LINE(v.empno||' '||v.sal||' '||v.deptno); END LOOP;
END;
(3)
CREATE OR REPLACE PROCEDURE SHOWSAL(p_empno
scott.emp.empno%type)
AS
v_sal emp.sal%TYPE;
BEGIN
SELECT sal INTO v_sal FROM scott.emp WHERE empno=p_empno; DBMS_OUTPUT.PUT_LINE(v_sal);
END;
begin
showsal(7844);
end;
(4)
CREATE OR REPLACE PROCEDURE UPDATESAL (p_empno emp.empno%TYPE) AS
v_deptno emp.deptno%TYPE;
v_inc emp.sal%TYPE;
BEGIN
SELECT deptno INTO v_deptno FROM emp WHERE empno=p_empno; CASE v_deptno
WHEN 10 THEN v_inc:=150;
WHEN 20 THEN v_inc:=200;
WHEN 30 THEN v_inc:=250;
ELSE v_inc:=300;
END CASE;
UPDATE emp SET sal=sal+v_inc WHERE empno=p_empno;
END;
(5)
CREATE OR REPLACE FUNCTION fun_sal(p_empno emp.empno%type) RETURN emp.sal%TYPE
AS
v_sal emp.sal%TYPE;
BEGIN
SELECT sal INTO v_sal FROM EMP WHERE empno=p_empno;
RETURN v_sal;
END;
(6)
CREATE OR REPLACE FUNCTION fun_avgsal(p_deptno
emp.deptno%type)
RETURN emp.sal%type
AS
v_sal emp.sal%type;
BEGIN
SELECT AVG(SAL) INTO V_SAL FROM EMP WHERE DEPTNO=P_DEPTNO; RETURN V_SAL;
END;
(7)
CREATE OR REPLACE FUNCTION fun_avg_sal(p_empno
emp.empno%type)
RETURN emp.sal%type
AS
v_sal emp.sal%type;
BEGIN
SELECT AVG(SAL) INTO V_SAL FROM EMP WHERE DEPTNO=(select deptno from emp where
empno=p_empno);
RETURN V_SAL;
END;
(8)
CREATE OR REPLACE PACKAGE PKG_EMP
AS
FUNCTION func_highsal(p_deptno emp.deptno%type) RETURN emp.sal%type;
PROCEDURE proc_highsal(p_deptno emp.deptno%type);
END;
CREATE OR REPLACE PACKAGE BODY PKG_EMP
AS
FUNCTION func_highsal(p_deptno emp.deptno%type)
RETURN emp.sal%type
AS
v_highsal emp.sal%type;
BEGIN
select max(sal) into v_highsal from emp where deptno=p_deptno; return v_highsal;
END;
PROCEDURE proc_highsal(p_deptno emp.deptno%type)
AS
BEGIN
FOR v_emp IN (SELECT * FROM EMP WHERE deptno=p_deptno and sal=func_highsal(p_deptno)) LOOP
DBMS_OUTPUT.PUT_LINE(v_emp.empno||' '||v_emp.ename);
END LOOP;
END;
END;
BEGIN
pkg_emp.proc_highsal(10);
END;
四、实验总结
本次实验让我熟悉PL/SQL的编写方法,PL/SQL的基本语法、控制结构、游标、异常处理和存储子程序等各种知识点。

总体上来说是比较顺利的,不过实验中也遇到一些难题:例如结果显示不出,原因是没把环境变量serveroutput 设置为on。

这次实验让我更加熟悉oracle这个数据库!。

相关文档
最新文档