第十课Oracle PLSQL块基础、编写规则

合集下载

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从入门到精通 第16章

Oracle PLSQL从入门到精通 第16章
如果重新声明的内置函数是一个独立子程序,那么要 访问该子程序,就必须在这个子程序前冠以模式名; 如,DOG.TO_CHAR
2019/11/29
———— 不可不求,也不可强求 ————
7
前向引用所造成的问题
与其它块状结构的程序设计语言类似,PL/SQL语言 不允许向前引用
CREATE OR REPLACE PACKAGE BODY forward_pkg IS PROCEDURE award_bonus(. . .) IS BEGIN calc_rating (. . .); --illegal reference END;
9
软件包的初始化
在软件包体结尾处的程序块只执行一次、被用于初始 化软件包中的公共和私有变量:
CREATE OR REPLACE PACKAGE BODY salary_pkg IS FUNCTION validate(p_sal NUMBER, p_grade NUMBER) RETURN BOOLEAN; PROCEDURE reset_salary(p_new_sal NUMBER, p_grade NUMBER) IS BEGIN ...... FUNCTION validate(p_sal NUMBER, p_grade NUMBER) RETURN BOOLEAN IS ......
END employee_pkg;
CREATE OR REPLACE PACKAGE BODY employee_pkg IS CURSOR emp_cursor IS SELECT empno FROM emp;
PROCEDURE open_emp IS BEGIN IF NOT emp_cursor%ISOPEN THEN OPEN emp_cursor; END IF; END open_emp;

plsql developer14使用技巧

plsql developer14使用技巧

plsql developer14使用技巧PL/SQL Developer是一款功能强大的Oracle数据库开发工具,用于编写、调试和优化PL/SQL代码。

无论是新手还是有经验的开发人员,在使用PL/SQL Developer时都可以从以下几个方面提高开发效率和代码质量。

一、界面设置及快捷键1.适应自己的工作习惯,可以根据需要配置界面布局、字体大小等。

2.设置自己喜欢的配色方案,减少眼部疲劳。

3.学习并使用PL/SQL Developer的快捷键,例如Ctrl+空格可以自动补全关键字和对象名称,F9可以执行选中的代码块等。

二、导航和对象查看1.使用对象浏览器可以方便地查看数据库对象的结构,双击可直接编辑对象。

2.使用查找功能可以快速定位代码中的特定关键字。

3.在代码中使用Ctrl+点击可以快速跳转到对象的定义或引用位置。

三、代码编写和调试1.编写代码时,利用代码提示和补全功能,避免拼写错误和语法错误。

2.使用代码块编辑器可以快速生成常用代码块,提高开发效率。

3.使用断点和调试功能,可以逐行调试代码,查看变量值和执行路径,帮助定位问题和解决bug。

四、性能调优和优化1.使用性能分析器可以对SQL语句进行调优和优化,定位性能瓶颈并提出优化建议。

2.使用执行计划分析工具可以查看SQL语句的执行计划,优化查询性能。

3.使用性能图表可以直观地查看数据库的性能状况,及时调整参数和优化SQL语句。

五、版本控制和团队协作1.将代码纳入版本控制系统,保证代码的版本管理和历史记录。

2.使用代码注释和文档功能,方便他人理解和维护代码。

3.与团队成员共享代码和工作成果,可以通过文件比较功能检查代码的差异和合并更新。

六、自动化和批处理1.使用脚本编辑器和批处理功能可以批量执行SQL语句,提高工作效率。

2.学习并使用PL/SQL Developer的命令行工具,可以通过命令行执行常用操作,如导出数据、执行脚本等。

七、学习和社区支持1.阅读PL/SQL Developer的官方文档,了解每个功能的详细用法和注意事项。

Oracle_PLSQL教程-第二章

Oracle_PLSQL教程-第二章

翻译:陈拓 chentuo@2006 年 6 月16 日创建过程Copyright © Oracle Corporation, 2001. All rights reserved.进度表: 时间 主题40 分钟 讲演25 分钟 练习65 分钟 总共目标完成本课程后, 您应当能够:• 描述过程• 创建过程• 形式参数和实际参数之间的区别• 列举不同参数模式的特性• 创建带参数的过程• 调用过程• 在过程中处理异常• 删除过程2­2 Copyright © Oracle Corporation, 2001. All rights reserved.本课目标在本课中,你将学习创建、执行和删除过程。

什么是过程?• 过程是执行一个动作的子程序的一种类型• 过程可以作为一个方案对象被存储在数据库中,用于重 复执行2­3 Copyright © Oracle Corporation, 2001. All rights reserved.过程的定义过程是一个命名的 PL/SQL 块,它能够接收参数 (在英文中 parameters 有时也称 为 arguments),并且被调用,一般而言,你使用一个过程来完成一个动作。

一个过程有 一个头,一个声明部分,一个执行部分和一个可选的异常处理部分。

一个过程可以被编译并且被作为方案对象存储在数据库中。

过程提高可重用性和可维护性。

当可用时,他们可以在应用程序中被多次使用。

如 果需求改变了,仅仅过程序要被更新,应用程序可以不受影响。

2­4 Copyright © Oracle Corporation, 2001. All rights reserved.创建过程的语法• REPLACE 选项指示如果过程存在,它将被删除并且用语句创建的新版本代替• PL/SQL 块,既可以用 BEGIN 开始也可以用局部变量的声明开始,既可以用 END 结束也可以用 ENDprocedure_name 结束CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter1 [mode1] datatype1, parameter2 [mode2] datatype2, . . .)] IS|AS PL/SQL Block;CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter1 [mode1] datatype1, parameter2 [mode2] datatype2, . . .)] IS|AS PL/SQL Block; 创建过程的语法语法定义 参数说明 procedure_name过程的名字 parameterPL/SQL 变量的名字,依据所使用的模式,参数值由过程被 传递到主叫环境或反之,或两者都有 mode参数的类型:IN (默认)、OUT 、IN OUT Data type参数的数据类型 ­ 可以是任何 PL/SQL 数据类型。

oracle_plsql语句大全

oracle_plsql语句大全

sql语句的编程手册SQL PLUS一、SQL PLUS1 引言SQL命令以下17个是作为语句开头的关键字:alter drop revokeaudit grant rollback*commit* insert selectcomment lock updatecreate noaudit validatedelete rename这些命令必须以“;”结尾带*命令句尾不必加分号,并且不存入SQL缓存区。

SQL中没有的SQL*PLUS命令这些命令不存入SQL缓存区@ define pause# del quit$ describe remark/ disconnect runaccept document saveappend edit setbreak exit showbtitle get spoolchange help sqlplusclear host startcolumn input timingcompute list ttitleconnect newpage undefinecopy---------2 数据库查询数据字典TAB 用户创建的所有基表、视图和同义词清单DTAB 构成数据字典的所有表COL 用户创建的基表的所有列定义的清单CA TALOG 用户可存取的所有基表清单select * from tab;describe命令描述基表的结构信息describe deptselect *from emp;select empno,ename,jobfrom emp;select * from deptorder by deptno desc;逻辑运算符= !=或<> > >= < <=inbetween value1 and value2like%_in nullnotno in,is not null谓词in和not in有哪些职员和分析员select ename,jobfrom empwhere job in ('clerk','analyst');select ename,jobfrom empwhere job not in ('clerk','analyst');谓词between和not between哪些雇员的工资在2000和3000之间select ename,job,sal from empwhere sal between 2000 and 3000;select ename,job,sal from empwhere sal not between 2000 and 3000;谓词like,not likeselect ename,deptno from empwhere ename like 'S%';(以字母S开头)select ename,deptno from empwhere ename like '%K';(以K结尾)select ename,deptno from empwhere ename like 'W___';(以W开头,后面仅有三个字母)select ename,job from empwhere job not like 'sales%';(哪些雇员的工种名不以sales开头)谓词is null,is not null没有奖金的雇员(即commision为null)select ename,job from empwhere comm is null;select ename,job from empwhere comm is not null;多条件查询select ename,jobfrom empwhere deptno=20and job!='clerk';表达式+ - * /算术表达式选择奖金高于其工资的5%的雇员select ename,sal,comm,comm/sal from emp where comm>.05*salorder by comm/sal desc;日期型数据的运算add two days to 6-Mar-876-Mar-87 + 2 = 8-Mar-87add two hours to 6-Mar-876-Mar-87 + 2/24 = 6-Mar-87 and 2hrsadd 15 seconds to 6-Mar-876-Mar-87 + 15/(24*60*60) = 6-Mar-87 and 15 secs列名的别名select ename employee from empwhere deptno=10;(别名:employee)select ename,sal,comm,comm/sal "C/S RATIO" from empwhere comm>.05*salorder by comm/sal desc;SQL命令的编辑list or l 显示缓冲区的内容list 4 显示当前SQL命令的第4行,并把第4行作为当前行,在该行号后面有个*。

Oracle数据库之PLSQL触发器

Oracle数据库之PLSQL触发器

Oracle数据库之PLSQL触发器Oracle数据库之PL/SQL触发器1. 介绍触发器(trigger)是提供给程序员和数据分析员来保证数据完整性的⼀种⽅法,它是与表事件相关的特殊的存储过程,它的执⾏不是由程序调⽤,也不是⼿⼯启动,⽽是由事件来触发,⽐如当对⼀个表进⾏操作(insert,delete,update)时就会激活它执⾏。

触发器经常⽤于加强数据的完整性约束和业务规则等。

触发器有三种类型,分别是:DML触发器、替代触发器和系统触发器。

DML触发器顾名思义,DML触发器是由DML语句触发的。

例如数据库的INSERT、UPDATE、DELETE操作都可以触发该类型的触发器。

它们可以在这些语句之前或之后触发,或者在⾏级上触发(就是说对于每个受影响的⾏都触发⼀次)。

替代触发器替代触发器只能使⽤在视图上,与DML不同的是,DML触发器是运⾏在DML之外的,⽽替代触发器是代替激发它的DML语句运⾏。

替代触发器是⾏触发器。

系统触发器这种触发器是发⽣在如数据库启动或关闭等系统事件时,不是在执⾏DML语句时发⽣,当然也可以在DDL时触发。

触发器功能强⼤,轻松可靠地实现许多复杂的功能,但是我们也应该慎⽤。

为什么⼜要慎⽤呢?触发器本⾝没有过错,但如果我们滥⽤,会造成数据库及应⽤程序的维护困难。

在数据库操作中,我们可以通过关系、触发器、存储过程、应⽤程序等来实现数据操作,同时约束、缺省值也是保证数据完整性的重要保障。

如果我们对触发器过分的依赖,势必影响数据库的结构,同时增加了维护的复杂程度。

2. 触发器组成触发器主要由以下⼏个要素组成:1. 触发事件:引起触发器被触发的事件。

2. 触发时间:触发器是在触发事件发⽣之前(BEFORE)还是之后(AFTER)触发,也就是触发事件和该触发器的操作顺序。

3. 触发操作:触发器被触发之后的⽬的和意图,是触发器本⾝要做的事情。

4. 触发对象:包括表、视图、模式、数据库。

plsql使用介绍

plsql使用介绍

PL/SQL Developer使用指南作为oracle的第三方开发工具,PL/SQL Developer使oracle PL/SQL语句的编译及执行显得更加简单易用。

而在其他的方面,和其他的第三方工具(如Toad)都有相似的功能和操作方法。

一、安装PL/SQL Developer不需要执行安装程序,只要从其他机上copy一个来就可以使用。

二、登录在使用PL/SQL Developer之前,首先需要在本机上配置数据库客户端(在oracle自带工具Net8 Assistant中可配置)。

配置完成后,在以下窗口中敲入用户名和密码就可进入PL/SQL Developer了。

进入PL/SQL Developer以后,会见到以下窗口:在这里,可以对数据库中的任何对象(包括函数、存储过程、包、表、触发器等等)进行编辑、修改、运行等。

(要视乎该用户的权限而定)。

如果用户要重新登录另一数据库,则可以按下“”重新输入本地数据库标识和用户及密码重新登录。

三、修改对象或编译存储过程我们以存储过程为例:双击菜单项“procedures”,按右键即可选择新建存储过程(new)或是修改存储过程(edit)等等。

选择完毕后则用oracle的PL/SQL语句对存储过程进行编辑,在编辑完以后按下可以对它进行编译,如果编译未通过,会在窗口中出现错误提示(如下图所示),用户可根据提示进行修改和再次编译。

当完全编译通过后,用户可单击存储过程并按右键,选择“test”(执行存储过程),出现以下窗口:在执行前,首先按“”进行调试,然后按“”执行该存储过程;如果用户在执行过程中发生错误异常退出了,PL/SQL Developer会在窗口中显示错误,并提示退出。

在发生错误后,用户可以选择在存储过程中添加“DBMS_OUTPUT.put_line(字符串)”语句来进行错误跟踪或是通过一步步执行存储过程(按)来查看执行过程中数据的变化从而进行纠错。

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

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

7 使用程序数据
7.2 PL/SQL数据类型概 述
7.2.6 ROWID 7.2.7 REF CURSOR 7.2.8 Internet数据类型 7.2.9 “Any”数据类型 7.2.10 用户自定义数据类 型
7 使用程序数据
7.3 程序数据的声明
7.3.1 声明一个变量 7.3.2 声明常量 7.3.3 NOT NULL语句 7.3.4 锚定声明 7.3.5 游标和表的锚 7.3.6 使用锚定声明的益处 7.3.7 NOT NULL数据类型的锚
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 数字子类型
CD
10 日期和时间戳
10.1 Datetime数据类 型
10.1.1 声明日期时间变量
10.1.2 选择日期时间数据类 型
10 日期和时间戳
10.3 INTERVAL数据类型
10.3.1 声明INTERVAL变量 10.3.2 什么时候使用INTERVAL
10 日期和时间戳
10.4 日期时间转换
7 使用程序数据
7.5 数据类型转换
7.5.1 隐式类型转换 7.5.2 显式类型转换
8 字符串
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

PL/SQL块结构
一个PL/SQL块包括三部分:声明部分、执行部分、异常 处理部分。
DECLARE …… …… BEGIN ……. ……. EXCEPTION ……. ……. END; 声明部分:以关键字declare开始,用于定义 常量、变量、游标、异常等。 执行部分:以关键字begin开始,用于实现应 用模块功能,该部分包含了要执行的PL/SQL 语句和SQL语句。 异常处理部分:以关键字exception开始,用 于处理执行部分可能出现的运行错误。

输出
例如:将职工编号为7369的职工姓名以变量 v_ename输出。
DECLARE v_ename VARCHAR2(8) ; BEGIN SELECT ename INTO v_ename FROM scott.emp WHERE empno=7369; dbms_output.put_line(v_ename); END;
注:V$视图是SYS用户所拥有的,在缺省状况下,只
有SYS用户和拥有DBA系统权限的用户可以看到所有
的视图,没有DBA权限的用户可以看到USER_和
ALL_视图。
NEW
新课引 言
SQL语言对数据库进行各种操作,每次只能执行一条语 句,语句以英文的分号为结束标识,这样使用起来很不方便, 同时执行效率低。 Oracle数据库系统不像程序设计语言,它侧重于后台数 据库的管理,提供的编程能力较弱。而结构化编程语言对数据 库的支持能力又较弱。如果一些稍微复杂的管理任务都要借助 编程语言来实现的话,这对管理员来说是很大的负担。 正是在这种需求的驱使下,从Oracle6开始Oracle公司在 标准SQL语言的基础上加入了变量、控制结构、过程和函数等 结构化程序设计的要素,发展了自己的PL/SQL语言,这样就 能够编制比较复杂的程序,利用PL/SQL语言编写的程序也称 为PL/SQL程序块。
公共同义词、私有同义词 create public synonym synomym_name for [schema.] object
数据字典

数据字典(Data Dictionary,简称DD)是以数据表和视图 为主要存在形式的。对它们可以象处理其他数据库表或视图 一样进行查询,但不能进行任何修改。 Oracle数据库字典通常是在创建和安装数据库时被创建的, Oracle数据字典是Oracle数据库系统工作的基础,没有数据 字典的支持,Oracle数据库系统就不能进行任何工作 数据字典里存有用户信息、用户的权限信息、所有数据对象 信息、表的约束条件、统计分析数据库的视图等。当用户在 对数据库中的数据进行操作时遇到困难就可以访问数据字典 来查看详细的信息。

输入字符&
例如:输入任意的职工编号并输出。 DECLARE v_empno number(4):=&v_e; BEGIN dbms_output.put_line(v_empno); END;

输入字符&
练习:将任意职工编号的职工姓名以变量v_ename 输出。
A、v_ename C、v_sal D、c_tax E、%sal VARCHAR2(10);
B、v_sal,v_comm
NUMBER(6,2);
NUMBER(6,2) NOT NULL; CONSTANT NUMBER(6,2) DEFAULT 0.17; NUMBER(6,2);
F、v_comm m%TYPE;
说明: •每行只能定义一个标识符。 •如果加上关键字CONSTANT,则表示所定义的标识符为一个常 量,必须为它赋初值。 •如果定义的标识符不能为空,则必须加上关键字NOT NULL, 并赋初值。
•为标识符赋值时,使用赋值符号‘:=’,默认值为空。
定义变量
练习:以下哪几种定义变量和常量的方法是正确的?
create sequence sequence_name [increment by n] [start with n] [{minvalue n |nominvalue}] [{maxvalue n |nomaxvalue}] [cycle | nocycle] [{cache n | nocache}]
put_line和put的区别:
dbms_output.put_line换行,dbms_output.put不换行。 例: BEGIN
dbms_output.put('put======='); dbms_output.put('put======='); dbms_output.put_line('putline======'); dbms_output.put_line('putline======'); dbms_output.put_line('putline======'); END; 结果: put=======put=======putline====== putline====== putline======
DECLARE v_ename VARCHAR2(8) ; BEGIN SELECT ename INTO v_ename FROM scott.emp WHERE empno=&no; dbms_output.put_line('雇员名:'|| v_ename); END;
PL/SQL块分类
命名块:是指具有特定名称标识的PL/SQL块,命名块与匿名块非 常类似,只不过在PL/SQL块前使用<< >>加以标记。 <<outer>>
PL/SQL块分类 过程 子程序: 函数

触发器:
PL/SQL块的DECLARE部分
PL/SQL数据类型
当编写PL/SQL块时,为了存储临时数据,需要定义变量 和常量。为了在应用环境和子程序之间传递数据,需要 为子程序定义参数。当定义变量、常量和参数时,需要 指定合适的PL/SQL数据类型:
标量(scalar)数据类型 复合(composite)数据类型 LOB(large object)数据类型
复 习
什么是索引?
索引是一个单独的、物理的数据库结构,它是表中一 列或多列值的集合和相应行所对应的rowid。
索引的分类
Oracle的索引主要包含两类:_Tree索引和位图索引。
默认情况下大多使用B_tree索引,该索引就是通常所见
的唯一索引、非唯一性索引、单列索引、复合索引等。
创建索引--create index命令
标量数据类型 标量数据类型包括数字、字符、日期和布 尔等类型。

标量数据类型—数字类型

number(p,s)

pls_integer:定义整数,范围为-2147483647到+
2147483647。

binary_integer:同pls_integer。
binary_float:定义单精度浮点数。当为该类型变 量赋值时,应该带有后缀f(例如:1.5f)。 binary_double:定义双精度浮点数。当为该类型 变量赋值时,应该带有后缀d(例如:3.00095d)。
DECLARE v_ename VARCHAR2(8) ; BEGIN SELECT ename INTO v_ename FROM scott.emp WHERE empno=&no; dbms_output.put_line('雇员名:'|| v_ename); END;
注:当使用嵌套块时,为了区分多级嵌套层次关系,可以使 用命名块加以区分。

输出
利用PL/SQL的系统包——dbms_output将输出显示到 屏幕上,需用SET SERVEROUTPUT ON打开该功能。 常利用dbms_output包中的dbms_output.put_line 和 dbms_output.put过程。
例如: BEGIN dbms_output.put_line(sysdate); END;
拥有的对象的信息。
“ALL_”为前缀的数据库字典视图通常记录包括执行查询的
帐户所拥有的对象的信息及授权至PUBLIC的帐户用户所拥有 的对象的信息
“DBA_”为前缀的数据库字典视图包含所有数据库对象的信息, 而不管其所有者 其他的字典视图中主要的是V$视图,之所以这样叫是因为
他们都是以V$或GV$开头的。
数据字典的分类

静态数据字典:主要是在用户访问数据字典时不
会发生改变

动态数据字典:是依赖数据库运行的性能,反映 数据库运行的一些内在信息。
在Oracle数据库字典中,许多视图都有三个不同的实例,它们
的前缀分别为“USER_”、“ALL_”、“DBA_”
“USER_”为前缀的数据库字典视图通常记录执行查询的账户所
注:declare部分属于可选部分,exception部分属于可选部分, begin部分是必需的,end为PL/SQL块的结束标记,换行使用/执行。
PL/SQL块分类

当使用PL/SQL开发应程序时,根据需要实现的应用模块功 能,可以将PL/SQL块划分为匿名块、命名块、子程序和触 发器四种类型。 匿名块:是指没有名称的PL/SQL块。
应用举例:
DECLARE v_ename v_sal BEGIN ………. ………. END; VARCHAR2(10); NUMBER(6,2);
PL/SQL块的BEGIN部分
在begin部分查询数据库
通过在PL/SQL块中的BEGIN部分嵌入SQL语句,可以将数 据放入变量,然后输出或处理该变量。 注意:select语句只能返回一条数据。 语法如下:

定义变量、常量名称需要注意的问题
• 定义变量、常量时,名称必须字母(A—Z,a—z)开始,并 且最大长度为30个字符。如果以其他字符开始,必须使用双 引号引住。 • 定义变量、常量时,名称中只能使用符号(A—Z、a—z、 0—9、_、$、#)。如果使用以其他字符,必须使用双引号 引住。 • 定义变量、常量时,名称不能使用oracle关键字。 • 为了提高程序的可读性,当定义变量名时,建议使用v_作为 前缀。 • 为了提高程序的可读性,当定义常量名时,建议使用c_作为
相关文档
最新文档