09 编程进阶-PLSQL
PLSQL循序渐进全面学习教程(全)

PLSQL循序渐进全面学习教程(全)PL/SQL是用于Oracle数据库的编程语言,它结合了SQL语句的数据操作能力和一般编程语言的逻辑控制能力。
PL/SQL循序渐进的全面学习教程将帮助你逐步学习和掌握PL/SQL的各个方面。
1.简介和基础知识:-PL/SQL的概念和背景-PL/SQL的开发工具和环境-PL/SQL和SQL的关系-PL/SQL的基本语法和数据类型2.变量和常量:-PL/SQL变量的声明和使用-不同类型的变量和数据类型-常量的定义和使用3.控制结构:-IF-THEN语句和IF-THEN-ELSE语句-CASE语句的使用-循环语句(FOR循环、WHILE循环)4.异常处理:-异常的概念和分类-异常处理的方法和语句-自定义异常和错误处理5.子程序和函数:-PL/SQL子程序和函数的概念和用途-创建和调用子程序和函数-参数传递和返回值6.游标和结果集:-游标的概念和使用场景-游标的声明、打开、关闭和绑定-使用游标处理结果集和数据集7.触发器:-触发器的概念和作用-创建和使用触发器-触发器的触发事件和触发时机8.包和包体:-包和包体的定义和特点-创建和使用包和包体-包的封装和共享9.过程和函数:-过程和函数的概念和区别-创建和使用过程和函数-过程和函数的编写和调用10.使用PL/SQL开发应用程序:-使用PL/SQL编写数据库操作代码-使用PL/SQL开发业务逻辑-PL/SQL和其他编程语言的集成以上是PL/SQL循序渐进全面学习教程的大纲,你可以根据自己的学习进度逐步深入学习每个主题。
希望这个教程对你学习和掌握PL/SQL编程语言有所帮助!。
plsql使用技巧

plsql使用技巧PL/SQL(Procedural Language/Structured Query Language)是一种过程性的编程语言,用于Oracle数据库的开发和管理。
它结合了SQL语句和基于编程的语言元素,从而允许开发人员编写复杂的业务逻辑和数据处理程序。
以下是一些PL/SQL使用技巧,可以帮助您更好地利用这个强大的工具。
1. 使用块来组织代码:PL/SQL程序由一个或多个块组成,每个块由BEGIN和END语句包围。
使用块可以将相关的代码段组合在一起,并简化代码的调试和维护。
2. 使用异常处理来处理错误:PL/SQL提供了异常处理机制,可以捕获和处理程序中的错误。
通过使用异常处理,可以使程序更加健壮,并提供更好的用户体验。
3. 使用游标来处理查询结果:游标是一种用于操作查询结果的PL/SQL对象。
通过使用游标,可以对查询结果进行逐行处理,并执行各种操作,如插入、更新或删除。
4. 使用PL/SQL表来处理临时数据:PL/SQL提供了PL/SQL 表,这是一种在内存中存储数据的临时表。
使用PL/SQL表可以大大提高程序的性能,因为它们比数据库表更快。
5. 使用存储过程和函数来封装业务逻辑:存储过程和函数是PL/SQL程序的一种类型,它们允许将一系列SQL语句封装到一个可重用的代码块中。
使用存储过程和函数可以提高代码的可维护性和重用性。
6. 使用触发器来自动执行任务:PL/SQL触发器是与数据库表相关联的一种代码块,当满足特定条件时,会自动执行。
使用触发器可以实现自动化任务,如在插入、更新或删除行时执行某些操作。
7. 使用游程来优化数据处理:游程是一种PL/SQL特性,可以将一组记录作为一个单元处理,而不是逐行处理。
通过使用游程,可以大大提高程序的性能,尤其是当需要处理大量数据时。
8. 使用动态SQL来处理动态查询:PL/SQL提供了动态SQL的能力,这使得可以在运行时构建和执行SQL语句。
plsql编程

5.游标的使用
提取游标数据: 提取游标数据:就是检索结果集合中的数据行, 放入指定的输出变量中。 格式: FETCH cursor_name INTO {variable_list | record_variable };
5.游标的使用
关闭游标: 关闭游标:当提取和处理完游标结果集合数据后, 应及时关闭游标,以释放该游标所占用的系统资 源,并使该游标的工作区变成无效,不能再使用 FETCH 语句取其中数据。关闭后的游标可以使用 OPEN 语句重新打开。 格式: CLOSE cursor_name;
6.创建和调用存储过程
创建过程语法格式: 创建过程语法格式
CREATE [OR REPLACE] PROCEDURE Procedure_name [ (argment [ { IN | IN OUT }] Type, argment [ { IN | OUT | IN OUT } ] Type ] { IS | AS } <类型.变量的说明> BEGIN <执行部分> EXCEPTION <可选的异常错误处理程序> END;
5.游标的使用
游标属性
%FOUND:布尔型属性,当最近一次读记录时成 功返回,则值为TRUE; %NOTFOUND:布尔型属性,与%FOUND相反; %ISOPEN:布尔型属性,当游标已打开时返回 TRUE; %ROWCOUNT:数字型属性,返回已从游标中读 取的记录数 。
6.创建和调用存储过程
创建带输入参数和输出参数的存储过程
调用p4: declare a varchar2(10):='001'; b number; c number; begin p4(a,b,c); dbms_output.put_line(b||'--'||c); end;
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 使用技巧

plsql 使用技巧PL/SQL是Oracle数据库中的一种编程语言,它结合了SQL语句和过程性编程语言的特点,提供了一种强大的数据库开发工具。
下面是一些PL/SQL使用技巧:1. 使用块:块是PL/SQL程序的基本单元。
使用块可以将一组相关的语句组织在一起,并提供一些错误处理机制。
块通常用于存储过程、触发器和函数中。
2. 使用游标:游标是用于在PL/SQL程序中处理查询结果的一种机制。
使用游标可以逐行处理查询结果,提供更灵活的数据操作方式。
3. 使用异常处理:异常处理是一种处理程序运行过程中出现异常的机制。
在PL/SQL中,可以使用EXCEPTION块来处理异常情况,提高程序的稳定性。
4. 使用存储过程和函数:存储过程和函数是一种将一组SQL语句和过程性语句组织在一起的机制。
使用存储过程和函数可以将复杂的逻辑封装起来,提高程序的可维护性和重用性。
5. 使用触发器:触发器是在数据库表中定义的一种特殊类型的存储过程。
使用触发器可以根据数据库表中的数据变化触发特定的逻辑处理。
6. 使用PL/SQL调试器:PL/SQL调试器是一种用于调试PL/SQL程序的工具。
使用调试器可以逐步执行PL/SQL代码,并查看变量的值和程序执行的状态,方便程序的调试和排错。
7. 使用PL/SQL包:PL/SQL包是将相关的存储过程、函数和变量组织在一起的一种机制。
使用包可以提供更好的模块化和封装性,方便程序的管理和维护。
8. 使用PL/SQL游标变量:PL/SQL游标变量是一种特殊的变量类型,用于在程序中保存游标的状态。
使用游标变量可以提高游标的灵活性和可重用性。
9. 使用PL/SQL集合类型:PL/SQL提供了各种集合类型,如数组、表和记录。
使用集合类型可以方便地处理多个数据元素,提高程序的性能和可读性。
10. 使用PL/SQL优化技巧:在编写和调试PL/SQL程序时,可以使用一些优化技巧来提高程序的性能。
例如,使用合适的索引、批量操作和合理的逻辑结构等。
PLSQL循序渐进全面学习教程

PL/SQL循序渐进全面学习教程(1)发布时间:2005.07.21 12:43来源:作者:prewind 课程一 PL/SQL 基本查询与排序本课重点:1、写SELECT语句进行数据库查询2、进行数学运算3、处理空值4、使用别名ALIASES5、连接列6、在SQL PLUS中编辑缓冲,修改SQL SCRIPTS7、ORDER BY进行排序输出。
8、使用WHERE 字段。
一、写SQL命令:不区分大小写。
SQL语句用数字分行,在SQL PLUS中被称为缓冲区。
最后以;或 / 结束语句。
也可以用RUN来执行语句二、举例例1:例2:对于数值或日期型的字段,可以进行相应的四则运算,优先级与标准的高级语言相同。
三、列的别名ALIASES:计算的时候特别有用;紧跟着列名,或在列名与别名之间加“AS”;如果别名中含有SPACE,特殊字符,或大小写,要用双引号引起。
例:四、连接符号:||连接不同的列或连接字符串使结果成为一个有意义的短语:五、管理NULL值:此函数使NULL转化为有意义的一个值,相当于替换NULL。
六、SQL PLUS的基本内容,请参考《SQL PLUS 简单实用精髓篇》七、ORDER BY 操作:与其他SQL92标准数据库相似,排序如:从Oracle7 release 7.0.16开始,ORDER BY 可以用别名。
另:通过位置判断排序:这样就避免了再写一次很长的表达式。
另:多列排序:八、限制选取行:例1:例2:例3:如果有列为NULL优先级:Order Evaluated Operator1 All comparison operators (=, <>, >, >=, <, <=, IN, LIKE, IS NULL, BETWEEN)2 AND3 OR总结:我们今天主要学习了如何进行查询SELECT操作,具体的组合查询与子查询将在以后的课堂中学习,同时希望大家可以工作、学习中多多摸索,实践!123456789101112下一页>>PL/SQL循序渐进全面学习教程(2)发布时间:2005.07.21 12:43来源:作者:prewind 课程二 PL/SQL查询行函数本课重点:1、掌握各种在PL/SQL中可用的ROW函数2、使用这些函数的基本概念3、SELECT语句中使用函数4、使用转换函数注意:以下实例中标点均为英文半角一、FUNCTION的作用:进行数据计算,修改独立的数据,处理一组记录的输出,不同日期显示格式,进行数据类型转换函数分为:单独函数(ROW)和分组函数注意:可以嵌套、可以在SELECT, WHERE, 和 ORDER BY中出现。
PLSQL进阶教育训练
14
Oracle的CASE语句和表达式
Create or replace function calculate_values (p_input varchar2, p_number number) Return number Is V_return number; Begin case When p_input ='EXPENSE' and p_number < 1000 Then v_return:=0; When p_input ='EXPENSE' and p_number < 5000 Then v_return:=20; When p_input ='EXPENSE' and p_number >= 5000 Then v_return:=40; Else v_return:=100; End case; Return v_return; End;
BACK
11
Oracle9i PL/SQL里增加新功能
关联数组 Oracle CASE语句和表达式 Oracle MERGE语句 对ANSI/ISO SQL 1999规范的支持
12
关联数组
原來版本可以在定义完一个PL/SQL表之后通过 INDEX BY BINARY_INTEGAER选项,用索引的方式把 数值型数据类型关联到PL/SQL表的数组。 Oracle9i现在还允许通过INDEX BY VARCHAR2(N)选项对Varchar数据类型创建索引。下面 就是这样一个PL/SQL语句的例子: type v_test_table is table of number index by varchar2(100);
7
plsql编译
plsql编译【1.PL/SQL简介】PL/SQL(Procedural Language/Structured Query Language)是一种过程式编程语言,用于在关系型数据库管理系统(RDBMS)中进行存储过程、触发器和函数的开发。
它源于Oracle数据库系统,并已成为许多数据库管理系统中的标准编程语言。
【2.PL/SQL编译过程】PL/SQL编译过程主要包括以下几个步骤:1.解析:解析器读取PL/SQL代码,识别出其中的关键字、标识符、操作符和分隔符等,生成抽象语法树(AST)。
2.语义分析:对AST进行语义分析,检查代码中的语法错误和语义错误。
3.编译:将经过语义分析的代码编译为字节码,以便在数据库服务器上执行。
4.代码优化:编译器会对生成的字节码进行优化,提高代码的执行效率。
5.生成执行计划:根据优化后的字节码生成执行计划,用于数据库服务器的执行。
【3.编译器组件】编译器主要包括以下几个组件:1.词法分析器:负责识别PL/SQL代码中的关键字、标识符、操作符和分隔符等。
2.语法分析器:将词法分析器生成的抽象语法树进行解析,检查代码的语法结构。
3.语义分析器:对语法分析器生成的AST进行语义分析,检查代码的语义正确性。
4.代码生成器:将经过优化的AST编译为字节码。
5.优化器:对生成的字节码进行优化,提高代码的执行效率。
【4.代码优化】编译器会对生成的字节码进行以下方面的优化:1.消除冗余操作:删除代码中不必要的计算,减少执行次数。
2.常量折叠:将常量运算结果提前计算,减少执行次数。
3.谓词提升:将谓词(如大于、小于等)提升为逻辑表达式,提高代码可读性。
4.索引使用:优化查询语句,提高查询效率。
【5.编译与执行】编译完成后,生成的字节码会被加载到数据库服务器上,并根据执行计划进行执行。
执行过程中,数据库服务器会负责解释和执行字节码,完成相应的操作。
【6.常见问题及解决方法】1.语法错误:检查代码中的关键字、标识符、操作符等是否符合语法规范。
ORACLE-PLSQL编程详解--全8篇
ORACLE PL/SQL编程详解第一章:PL/SQL 程序设计简介SQL语言只是访问、操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发。
PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问。
由于该语言集成于数据库服务器中,所以PL/SQL代码可以对数据进行快速高效的处理。
除此之外,可以在ORACLE数据库的某些客户端工具中,使用PL/SQL语言也是该语言的一个特点。
本章的主要内容是讨论引入PL/SQL 语言的必要性和该语言的主要特点,以及了解PL/SQL语言的重要性和数据库版本问题。
还要介绍一些贯穿全书的更详细的高级概念,并在本章的最后就我们在本书案例中使用的数据库表的若干约定做一说明。
SQL与PL/SQL什么是PL/SQLPL/SQL是 Procedure Language & Structured Query Language 的缩写。
ORACLE的SQL是支持ANSI(American national Standards Institute)和ISO92 (International Standards Organization)标准的产品。
PL/SQL是对SQL语言存储过程语言的扩展。
从ORACLE6以后,ORACLE的RDBMS附带了PL/SQL。
它现在已经成为一种过程处理语言,简称PL/SQL。
目前的PL/SQL包括两部分,一部分是数据库引擎部分;另一部分是可嵌入到许多产品(如C语言,JAVA语言等)工具中的独立引擎。
可以将这两部分称为:数据库PL/SQL和工具PL/SQL。
两者的编程非常相似。
都具有编程结构、语法和逻辑机制。
工具PL/SQL另外还增加了用于支持工具(如ORACLE Forms)的句法,如:在窗体上设置按钮等。
本章主要介绍数据库PL/SQL 内容。
PL/SQL的优点或特征有利于客户/服务器环境应用的运行对于客户/服务器环境来说,真正的瓶颈是网络上。
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语句来调用存储过程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第9章编程进阶——PL/SQL本章通过实例的方式教会读者掌握PL/SQL的编程基本要素,从而完成复杂的管理任务。
9.1节从实例出发,分析了完整的PL/SQL程序的结构。
9.2节介绍PL/SQL程序的基本语法要素,包括常量、基本数据类型、复合数据类型、表达式和函数。
9.3节介绍了条件控制和循环控制的流程控制结构。
9.4节介绍了事务处理的commit、rollback和savepoint等3个命令的使用。
9.5节介绍了如何定义、打开和提取游标的数据,如何使用主要的属性。
9.6节介绍无参数过程和带参数过程的创建、查询、修改和使用方法。
9.7节介绍了序列的创建和使用方法。
9.8节介绍如何定义异常。
9.9节通过一个综合实例介绍如何编写PL/SQL程序。
9.1 PL/SQL程序结构9.1.1 什么是PL/SQL程序前面第4章学习的标准化的SQL语言对数据库进行各种操作,每次只能执行一条语句,语句以英文的分号“;”为结束标识,这样使用起来很不方便,同时效率较低,这是因为Oracle 数据库系统不像VB、VC这样的程序设计语言,它侧重于后台数据库的管理,因此提供的编程能力较弱,而结构化编程语言对数据库的支持能力又较弱,如果一些稍微复杂点的管理任务都要借助编程语言来实现的话,这对管理员来讲是很大的负担。
正是在这种需求的驱使下,从Oracle 6开始,Oracle公司在标准SQL语言的基础上发展了自己的PL/SQL(Procedural Language/SQL,过程化SQL语言)语言,将变量、控制结构、过程和函数等结构化程序设计的要素引入了SQL语言中,这样就能够编制比较复杂的SQL 程序了,利用PL/SQL语言编写的程序也称为PL/SQL程序块。
PL/SQL程序块的主要特点如下。
具有模块化的结构。
使用过程化语言控制结构。
能够进行错误处理。
PL/SQL程序块只能在【SQL Plus】、【SQLPlus Worksheet】等工具支持下以解释型方式执行,不能编译成可执行文件,脱离支撑环境执行。
9.1.2 PL/SQL实例分析下面将为前面建立的tempuser用户建立一个名为testtable的数据表。
在该表中有recordnumber整数型字段和currentdate时间型字段,编制一个PL/SQL程序完成向该表中自动输入100个记录,要求recordnumber字段从1到100,currentdate字段为当前系统时间。
(1)前面建立的tempuser用户默认的表空间为USERS,因此,要想使该用户能够使用表空间建立数据方案对象,必须首先给其赋予名为“RESOURCE”的角色。
(2)以system用户、SYSDBA身份登录数据库后,在【企业管理器】中按照修改用户的步骤进行操作,直到出现如图9.1所示的编辑用户的【角色】选项卡。
在【可用】下拉列表框中选择“RESOURCE”,单击按钮将其添加到【已授予】列表框中。
【默认值】单元格被选中,单击按钮。
图9.1 编辑用户的【角色】选项卡(3)读者也可以在【SQLPlus Worksheet】中直接执行如下SQL代码完成上述操作。
―――――――――――――――――――――――――――――――――――――GRANT "RESOURCE" TO "TEMPUSER";ALTER USER "TEMPUSER" DEFAULT ROLE ALL―――――――――――――――――――――――――――――――――――――【配套程序位置】:第9章\grantrole.sql。
(4)按照创建数据表的操作步骤进行,直到出现如图9.2所示的创建表的【一般信息】选项卡。
在【名称】文本框中输入“testable”。
在【方案】下拉列表框中选择“tempuser”。
在【表空间】下拉列表框中选择“users”。
选择【表】/【标准】单选钮。
选择【定义列】单选钮。
在【表列定义区】中输入两个数据列的定义。
完成设置后单击按钮。
图9.2 创建表的【一般信息】选项卡(5)读者也可以在【SQLPlus Worksheet】中直接执行如下SQL代码完成上述操作。
―――――――――――――――――――――――――――――――――――――CREATE TABLE "TEMPUSER"."TESTTABLE" ("RECORDNUMBER" NUMBER(4) NOTNULL, "CURRENTDATE" DATE NOT NULL)TABLESPACE "USERS"―――――――――――――――――――――――――――――――――――――【配套程序位置】:第9章\createtesttable.sql。
(6)以tempuser用户身份登录【SQLPlus Worksheet】,执行下列SQL代码完成向数据表tempuser.testable中输入100个记录的功能。
执行结果如图9.3所示。
―――――――――――――――――――――――――――――――――――――set serveroutput ondeclaremaxrecords constant int:=100;i int :=1;beginfor i in 1..maxrecords loopinsert into tempuser.testtable(recordnumber,currentdate)values(i,sysdate);end loop;dbms_output.put_line('成功录入数据!');commit;end;―――――――――――――――――――――――――――――――――――――【配套程序位置】:第9章\inserttesttable.sql。
图9.3 成功执行PL/SQL 程序(7)在【SQLPlus Worksheet 】中执行下列语句,查询插入的数据,结果如图9.4所示。
―――――――――――――――――――――――――――――――――――――select * from tempuser.testtable;――――――――――――――――――――――――――――――――――――― 【配套程序位置】:第9章\selecttesttable.sql 。
图9.4 查询执行PL/SQL 程序后的结果对完成上述数据插入过程的PL/SQL 程序的分析如表9.1所示。
表9.1 PL/SQL 实例代码分析程序代码说明set serveroutput on允许服务器输出 declare定义部分标识maxrecords constant int:=100; 定义maxrecords 为整型常量100 i int :=1; 定义i 为整型值变量,初值为1 Begin执行部分标识成功执行PL/SQL 程序续表for i in 1..maxrecords loop i从1循环到maxrecords向数据表中插入数据Insert into tempuser.testtable(recordnumber,currentdate) values(i,sysdate);end loop; 结束循环dbms_output.put_line('成功录入数据!'); 显示成功录入数据信息commit; 提交结果end; 结束执行表中的sysdate为系统时间函数;dbms_output为系统默认的程序包,put_line 为包中定义的方法,功能是输出信息;在Oracle中,所有对数据库数据的更改并没有直接操作数据库,而是放在叫工作区的内存里,只有在commit语句执行后,才发生永久更改。
9.1.3 PL/SQL程序结构结合上述实例进行分析,完整的PL/SQL程序结构可以分为3个部分。
1. 定义部分以Declare为标识,在该部分中定义程序中要使用的常量、变量、游标和例外处理名称,PL/SQL程序中使用的所有定义必须在该部分集中定义,而在高级语言里变量可以在程序执行过程中定义。
2. 执行部分以begin为开始标识,以end为结束标识。
该部分是每个PL/SQL程序所必备的,包含了对数据库的操作语句和各种流程控制语句。
3. 异常处理部分该部分包含在执行部分里面,以exception为标识,对程序执行中产生的异常情况进行处理。
一个完整的PL/SQL程序的总体结构如图9.5所示。
delacre定义语句段begin执行语句段exception异常处理语句段end图9.5 PL/SQL程序的总体结构有的程序比较简单,往往省略异常处理部分。
下面开始介绍PL/SQL的一些基本语法要素。
9.2 基本语法要素9.2.1 常量1. 定义常量的语法格式常量名 constant 类型标识符 [not null]:=值;常量,包括后面的变量名都必须以字母开头,不能有空格,不能超过30个字符长度,同时不能和保留字同名,常(变)量名称不区分大小写,在字母后面可以带数字或特殊字符。
括号内的not null为可选参数,若选用,表明该常(变)量不能为空值。
2. 实例在【SQLPlus Worksheet】中执行下列PL/SQL程序,该程序定义了名为pi的数字型常量,长度为9。
执行结果如图9.6所示。
―――――――――――――――――――――――――――――――――――――declarepi constant number(9):=3.1415926;begincommit;end;―――――――――――――――――――――――――――――――――――――【配套程序位置】:第9章\constantdefine.sql。
图9.6 定义常量9.2.2 基本数据类型变量1. 基本数据类型PL/SQL中常用的基本数据类型如表9.2所示。
表9.2 常见的数据基本类型类型标识符说明Number 数字型Int 整数型Pls_integer 整数型,产生溢出时出现错误Binary_integer 整数型,表示带符号的整数Char 定长字符型,最大255个字符Varchar2 变长字符型,最大2000个字符Long 变长字符型,最长2GBDate 日期型Boolean 布尔型(TRUE、FALSE、NULL三者取一)在PL/SQL中使用的数据类型和Oracle数据库中使用的数据类型,有的含义是完全一致的,有的是有不同的含义的。
2. 基本数据类型变量的定义方法变量名类型标识符 [not null]:=值;3. 实例在【SQLPlus Worksheet】中执行下列PL/SQL程序,该程序定义了名为age的数字型变量,长度为3,初始值为26。