《Orla 命令.pdf》由会员分享,可在线阅读,更多相关《Orla 命令.pdf(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、sqlplussqlplus 常用命令使用常用命令使用show 和 set 命令是两条用于维护SQL*Plus 系统变量的命令 SQL show all-查看所有 68 个系统变量值 SQL show user-显示当前连接用户 SQL show error-显示错误 SQL set heading off-禁止输出列标题,默认值为ON SQL set feedback off-禁止显示最后一行的计数反馈信息,默认值为对 6 个或更多的记录,回送 ON SQL set timing on-默认为 OFF,设置查询耗时,可用来估计SQL 语句的执行时间,测试性能 SQL set sqlpromp
2、t SQL -设置默认提示符,默认值就是SQL SQL set linesize 1000-设置屏幕显示行宽,默认100 SQL set autocommit ON-设置是否自动提交,默认为OFF SQL set pause on-默认为 OFF,设置暂停,会使屏幕显示停止,等待按下ENTER键,再显示下一页 SQL set arraysize 1-默认为 15 SQL set long 1000-默认为 80说明:long 值默认为 80,设置 1000 是为了显示更多的内容,因为很多数据字典视图中用到了 long 数据类型,如:SQL desc user_views列名可空值否类型-VIE
3、W_NAME NOT NULL VARCHAR2(30)TEXT_LENGTH NUMBERTEXT LONG命令列表:假设当前执行命令为:select*from tab;(a)ppend添加文本到缓冲区当前行尾a order by tname结果:select*from tab order by tname;(注:a 后面跟 2 个空格)(c)hange/old/new 在当前行用新的文本替换旧的文本c/*/tname结果:selecttname from tab;(c)hange/text从当前行删除文本c/tab结果:selecttname from;del删除当前行del n删除第 n
4、 行(i)nput 文本在当前行之后添加一行(l)ist显示缓冲区中所有行(l)ist n显示缓冲区中第 n 行(l)ist m n显示缓冲区中 m 到 n 行run执行当前缓冲区的命令/执行当前缓冲区的命令r执行当前缓冲区的命令文件名运行调入内存的 sql 文件,如:SQL edit s如果当前目录下不存在 s.sql 文件,则系统自动生成s.sql 文件,在其中输入“select*from tab;”,存盘退出。SQL s系统会自动查询当前用户下的所有表、视图、同义词。文件名在.sql 文件中调用令一个.sql 文件时使用save 文件名将缓冲区的命令以文件方式存盘,缺省文件扩展名为.sq
5、lget 文件名调入存盘的 sql 文件start 文件名运行调入内存的 sql 文件spool 文件名把这之后的各种操作及执行结果“假脱机”即存盘到磁盘文件上,默认文件扩展名为.lstspool显示当前的“假脱机”状态spool off停止输出例:SQL spool aSQL spool正假脱机到 A.LSTSQL spool offSQL spool当前无假脱机exit退出 SQL*PLUSdesc 表名显示表的结构show user显示当前连接用户show error显示错误show all显示所有 68 个系统变量值edit打开默认编辑器,Windows 系统中默认是 notepad.
6、exe,把缓冲区中最后一条 SQL 语句调入 afiedt.buf 文件中进行编辑edit 文件名把当前目录中指定的.sql 文件调入编辑器进行编辑clear screen清空当前屏幕显示-22-第三章附:上机练习内容:1.创建一数据库,启动实例并装配它。2.通过访问数据字典了解数据库的结构及实例结构。步骤:一创建数据库用 Netterm 或 Ptelnet,以 Oracle8 帐号登录 uibm 主机(IP:210.34.0.23)。进入/oracle/目录,ls 查看其结构。-clt1 -oradata -ora|-testdata-test|-ctl2 -oradata -ora|-te
7、stdata-test|-ctl3以上目录为各数据库中数据文件存放目录。效仿以上的目录结构,在 ctl1、ctl2、clt3 目录下再建一个 tstdata 目录,并在各 tstdata目录下建立一个 tst 目录cd/oracle/app/oracle/admin此目录为 Oracle 各数据库的管理目录。cd test进入 test 目录了解 Oracle 目录组织结构(OFA 结构),结合 ls 命令。ora -bdump后台存储文件目录(BACKGROUP_DUMP_DEST的值)|-udump用户转储文件目录(USER_DUMP_DEST的值)|-cdump核心文件|-pfile i
8、nit.ora和任何其它数据库初始化参数|-create 用于创建初始化数据和数据库对象的脚本|-SQL数据库管理 SQL 文件进入 create 目录阅读 crdbtest.sql 及 crdb2test.sql 这两个数据库 ORA 的创建脚本,进而知道创建数据库的过程命令。效防 test 下的目录结构,创建一名为tst 的目录,拷贝 test/pfile 及 test/create 下的所有文件到对应目录。Cd/oracle/app/oracle/admin Mkdir tst Cd tst Mkdir bdump Mkdir udump Mkdir cdump Mkdir pfile
9、Mkdir create Mkdir sql Cp./test/pfile/*pfile Cp./test/create/*create进入 tst/pfile 目录,启动 vi 编辑器编辑 configora.ora 文件:将所有与原来 test 目录有关的目录全以 tst 替换 test.如:原来的 control_files 参数中把/oracle/ctl1/oradata/test/control01.ctl,改为 /oracle/ctl1/oradata/tst/control01.ctl,需要改的地方还有:core_dump_dest user_dump_dest db_name
10、参数行把文件 configtest.ora 改名为 configtst.ora inittest.ora改名为 inittst.ora inittest_0.ora 改名为 inittst_0.ora编辑 inittst.ora 及 inittst_0.ora 文件,把它们中的前面的ifile 指定文件原来为:ifile=/oracle/app/oracle/admin/test/pfile/configtest.ora改为:ifile =/oracle/app/oracle/admin/tst/pfile/configtst.ora进入 tst/create 目录把 crdbtest.sql
11、 及 crdb2test.sql 改名为 crdbtst.sql 及 crdb2tst.sql编辑 crdbtst.sql 文件,修改以下行(将test 改为 tst):spool/oracle/app/oracle/admin/test/create/crdbtest.lst startup nomount pfile=create database test 改为 create database“tst”将 create database 语句的用的 character set 改为 ZHS16CGB231280,原先为 US7ASCII。ZHS16CGB231280 为 Oracle 中
12、支持中文国标的字符集名。编辑 crdb2tst.sql 文件,将其做类似以上的修改(将创建命令中所用到的有关原来test 目录改为 tst 目录,并可以适当调节你所要建立数据库的相关数据文件大小。修改 ORACLE_SID 环境变量值为新的 SID 名,此 SID 告诉 oracle 欲启动的实例名。ORACLE_SID=tst;exprot ORACLE_SID进入 tst/create 目录,启动服务器管理器(svrmgrl)执行 crdbtst.sql 脚本:cd/oracle/app/oracle/admin/tst/create svrmgrl crdbtst.sql执行后在 svr
13、mgrl 状态下再执行 crdb2tst.sql 脚本。Svrmgrl start crdb2tst.sql创建过程需要数分钟,请耐心等待 等上以脚本执行完毕,新的数据库已建立。此时,可以退出svrmgrl。拷贝 tst/pfile/inittst.ora文件至$ORACLE_HOME/dbs 目录,省得每次启动 svrmgrl 还要指定 init.ora 文件位置。在启动 svrmgrl 时,若没有特别指定 init.ora 的文件,ORACLE 将在$ORACLE_HOME/dbs找 init.ora 作为其启动的初始化参数文件,SID 为ORACLE_SID 环境变量值。再次启动 svr
14、mgrl(注意:ORACLE_SID 值必须已改为新的 SID 值。)svrmgrlsvrmgrlconnect internal;svrmgrlstartup (启动数据库)svrmgrlstart$ORACLE_HOMEdbscatproc.sqlcatproc.sql 脚本安装 Procedural Option所必需的脚本或 PL/SQL 对象及其支持的数据库结构。至此,我们已成功创建了一个新的数据库tst,并且我们也用实例 tst 来装配启动它。为了能够让用户从远程访问此数据库,我们还必须配置Oracle 的 TNS(Transparent Network Service),配置这一
15、服务只要改变一下其配置文件listener.ora 即可,最简单的办法是拷贝一个副本备份,然后直接编辑它,把原来的实例名更换为新的实例名即可。更名后,重新启动 tnslistener 进程即生效。$lsnrctl stop (在操作系统状态下执行)$lsnrctl start更改 SYS 及 SYSTEM 用户的默让密码。grant connect to sys(或 system)identified by 或 alter user sys identified by 以上命令可以在服务器管理器状态下执行,也可以在Sqlplus 下执行。二、考察数据库及实例结构启动 sqlplus 用 SYS
16、 或 SYSTEM 用户连接。或启动 svrmgrl,connect internal1.查询实例启动时间。select to_char(a.value,J)+b.value/86400,HH24:MI:SS DD-MON-RR)start_time from v$instance a,v$instance b where a.key=STARTUP TIME JULIAN ANDb.key=STARTUP TIME SECONDS;观看实例存储器分配信息SELECT name,bytes from v$sgastat Where name in(free memory,fixed_sga,d
17、b_block_buffers,log_buffer,dictionary cache,library cache,sql area);查看进程实例进程select spid,name from v$process,v$bgprocess where addr=paddr;查看数据库用户select username from dba_users;查看活动的控制文件select*from v$controlfile查看回滚段信息select a.segment_name,b.bytes,b.extents,a.tablespace_name,c.shrinks,c.extends,c.hwms
18、ize from dba_rollback_segs a,dba_segments b,v$rollstat c where a.segment_id=c.usn and a.segment_name=b.segment_name;查看重做日志信息select member,bytes,members,a.status from v$log,V$logfile b where a.group#=b.group#order by member;查看数据库链接select spid,mame from v$sysstatprocess,v$sysstatbgprocess where paddr(
19、+)=addr;查看多线程服务器进程 select*from v$dispatcher;select*from v$shared_server;第四章:SQL (本次课在机房,结合上机讲授)本章介绍 SQL 的基础知识。理解了 SQL 就理解了关系数据库。Oracle 与数据库的所有交互都使用 SQL(Structured Query Language)。SQL*Plus 是基于 SQL 但又具有 Oracle 特定功能的一种工具,它可用来生成报表、控制屏幕显示和打印输出格式。术语下面介绍本章使用的一引技术术语:DDL(Data Definition Language)数据定义语言是 SQL
20、中定义数据库中数据的结构的语言。定义数据时,将在Oracle 的数据字典中生成数据项。常见的DDL 关键字是 create、revoke、grant 和 alterDML(Data Manipulation Language)数据操纵语言为 SQL 结构,用来操纵数据库中数据(而非定义数据,定义数据由 DDL 完成)。常见的 DML 关键字为 select、insert、update 和 delete。在 Oracle 中,我们使用commit(提交)语句表示已经将修改后的数据保存到数据库。每次用户保存结果时,Oracle 将引用用户的提交操作。约束(constraint)是一种保证一个 Or
21、acle 表的数据间关系或两不同表中数据间的一致性的机制。Oracle8 数据库中一个对象(object)是一个有意义的事物,可在其内部存放信息。我们常谈的对象类型表和视图是两种最常见的。利用如 SQL*Plus 这样的程序将信息从Oracle 数据库中提取出来的操作称为查询(query)。回滚(Rollback)为当某个对话更改了数据库中的数据后,由于某种原因不想提交些更改时 Oracle 所采取的操作。这是一个把信息恢复到用户update 前状态的操作。SQL 语句有两大类:DDL 和 DML。下面我们进一步来看看二者的差异:二DDLDDL 数据定义语言是一组SQL 命令,用于创建和定义数
22、据库对象,并且将其保存在数据字典中。数据定义语言使用户能完成下列任务:创建(create)数据库对象删除(drop)数据库对象更改(alter)数据库对象为数据库对象授权(grant)回收已授给数据库对象的权限(revoke)当发布一条 DDL SQL 语句时,在每一条 DDL 语句执行前后,Oracle 都将提交当前的事务,理解这一上点很重要。因此如果用户插入(insert)记录到数据库中并且发布了一条DDL 语句,如 create table,此时来自 insert 命令的数据将提交到数据库。属于 DDL 的语句是自动提交的,这意味着当Oracle8 通知用户比如“Revoke succe
23、eded”,此时命令已完成不能回滚了。DDL 语句部分列表:alter procedure重编译存贮过程 alter table增加表列、修改表列、更改存贮分配 analyze收集数据库对象的性能统计值并送入代价的优化器 alter table add constraint在已有的表上增加约束 create table创建表 create index创建索引 drop index删除索引 drop table删除表 grant将权限或角色授予用户或其它角色 truncate删除表中所有行 revoke从用户或数据库角色回收权限三DMLDML(数据操纵语言)允许用户对数据库中的数据进行inser
24、t、update、delete 和 select 等操作。正如名字所示,DML 处理数据库中的数据内容。最常见的DML 语句是 insert、update、delete 和 select。InsertDeleteUpdateSelectCommit work把当前事务所作的更改永久化(写入磁盘)Rollback作废上次提交以来的所有更改在学习了两种主要类型的SQL 语句后,下面作进一步的介绍。首先登录进SQL*Plus,然后试一些最常见的 DDL 和 DML 语句。四.SQL*Plus 入门学习 SQL 最简单的办法就是使用SQL*Plus。因此先登录到SQL*Plus。Oracle 安装后有
25、一用户名 scott,口令为 tiger。我们可以用这个帐号登录试用。有两种方式进入 SQL*Plus:1.使用客户端的的 SQL*Plus 8.0。此程序项在启动菜单栏的Oracle For Windows95组中。启动它,在 connect 对话框中按提示输入用户名、口令及主机字符串。如果单机已装了 Personal Oracle 的,主机字符串可以不填,否则填上 SQL*Net 已配置的 service name,所连接的数据库实例在service 里已定义,这些定义可以使用 Oracle Net8 Easy Config进行配置。其结果保存在ORAWIN95NET80ADMINTNSN
26、AMES.ORA文件中。使用 Unix 上的 SQL*Plus登录到 UNIX 主机上,打入命令 sqlplus scott/tiger或 sqlplus 然后再按提示输入用户名及口令SQL*Plus:Release 8.0.4.0.0-Production on Sat Jul 3 0:31:55 1999(c)Copyright 1997 Oracle Corporation.All rights reserved.Connected to:Oracle8 Enterprise Edition Release 8.0.4.0.0-Production PL/SQL Release 8.0.
27、4.0.0-Production SQL在进入 SQL*Plus 后,会看到 SQL*Plus 提示符 SQL这时您就可以键入想试验的SQL 语句。下面我们讲一下与SQL缓冲器一起使用的SQL*Plus命令,这些可以帮助我们高效地输入命令。命令缩写 动作APPEND text A text 在行尾增加 textCHANGE old/new C old/new 在一行中将 old 文本改为 new 文本CLEAR BUFFER CL BUFF删除所有行DEL 删除缓冲器中所有行INPUT I将一行或多行增加到缓冲器INPUT text I text 增加一由 text 组成的行LIST L 列出
28、 SQL*Plus 缓冲器内容LIST n Ln 或 n 列出行 nLIST*L*列出当前行LIST m n L m n 列出行 m 至行 nLIST LAST L LAST 列出缓冲器中的最后一行RUN 运行缓冲器中的命令 SQL*Plus 中的命令行以分号(;)结束。下面我们给出一些 SQL 语句,大家可以在自己的机器上试验一下:select table_name from user_tables此命令用数据字典 user_tables 中列出用登录用户所拥有的表。若用 scott 登录,列出的结果如下:TABLE_NAME-BONUSDEPTDUMMYEMPHELP SALGRADE这些
29、表是在数据库安装时建立的让用户试验学习的表,查看这些表的结构可以用describe 命令,例如:SQLdescribe emp查看 emp 表的结构,结果如下:Name Null?Type-EMPNO NOT NULL NUMBER(4)ENAME VARCHAR2(10)JOB VARCHAR2(9)MGR NUMBER(4)HIREDATE DATE SAL NUMBER(7,2)COMM NUMBER(7,2)DEPTNO NUMBER(2)SQLselect empno,ename from emp查看表内容。.create 语句在任何数据库总是以DDL 语句开始,因为创建数据库对象的
30、工作是由DDL 语句来完成的。首先,我们将创建四个表:Customer、State、X 和 Y:SQLcreate table customer(last_name varchar2(30)not null,state_cd varchar(2),sales number)tablespace usersstorage(initial 25k next 25k minextents 1);Table created.SQLcreate table state(2 state_cd varchar(2)not null,3 state_name varchar2(30);Table create
31、d.SQLcreate table x(2 col varchar2(30);Table created.SQLcreate table y(col varchar2(30);Table created.Null 与 Not Null在创建 customer 表时,last_name 表列后跟一个限定符“not null”,这表示数据库不接受没有表列数据行到 customer 表中。换句话说,not null 表列是强制性字段,在表 customer 和 state 中,这意味着要在表中插入一行,last_name 和 state_cd 字段必须含有值。什么是空值(null value)空(n
32、ull)是不包括数据的表列。可以将null 理解为长度为 0 的字符串。很多时候若不知道某表列的类型可以给它赋一空值。但人们最容易犯的一个错误就是将空值加载到一个数值型表列中,而问题在于“1+null=null”!因此,如果用户偶然将空值加载至数值域中,那么产生的统计报表肯定不正确。Insert现在我们已经建立了一些表,让我们用不用DML 语句,在我们建立的表上插入一些数据,这些数据也将作为我们试验命令的数据。SQLinsert into customer values(Teplow,MA,23445.67);SQLinsert into customer values(Abbev,CA,69
33、69.96);每次成功地完成一条 insert 语句后,均返回建立信息,1 row created.该信息通知用户建立的行数。SQLinsert into customer values(Porter,CA,6989.99);SQLinsert into customer values(Martin,CA,2345.45);SQLinsert into customer values(Laursen,CA,34.34);SQLinsert into customer values(Bambi,CA,1234.55);SQLinsert into customer values(McGraw,N
34、J,123.45);现在我们用稍加变化的 insert 命令的数据插入 state 表。我们将指定数据要插入的表列名。这在处理大表时很有用,因为用户可能没有表中每一列的数据。例如:在一个预算系统中,只有在月末才有实际的花销数。SQLinsert into state(state_name,state_cd)values(Massachusetts,MA);SQLinsert into state(state_name,state_cd)values(California,CA);最后我们再插入一些数据到表X 和表 Y 中。SQLinsert into x values(1);SQLinsert
35、 into x values(2);SQLinsert into x values(3);SQLinsert into y values(3);SQLinsert into y values(4);SQLinsert into y values(5);Selectselect 命令用于从 Oracle 数据库中检索数据,select 是用户最常用的语句,select命令由四个基本部分构成:1).select 后跟用户要检索的信息(表或视图中的列名),这是select 命令不可少的部分,可用*号代表全部列。2).from 后跟检索对象(如存放数据的一个或多个表或视图的名称),from 部分也是必
36、不可少的。3).where 后跟检索条件,可选的。4).order by 后跟分类准则,可选的。现在我们来查看我们刚才插入的数据:SQLselect*from customer;SQLselect state_name from state;SQLselect*from x;SQLselect*from y;下面我们来看一下条件及范围检索:select last_name,state_cd,sales from customer where state_cd=MA;查看 state_cd 值为 MA 的所有客户。select*from customer where state_cd=CA an
37、d sales6000 select*from customer where state_cd=CA or sales6000 select*from customer where state_cd!=MA;带检索表select*from customer where state_cd in(NJ,CA);带匹配条件Select*from customer where last_name like M%;Select*from customer where last_name like%tin%;总结:=!=不等于=不等于=不等于不等于 =in ()等于括号内任一成员not in ()不等于括
38、号内任一成员between A and B大于等于 A 与小于等于 Bnot between A and B不大于等于 A 与小于等于 Blike%tin%包括给定子串(即tin)Order by:Select*from customer order by last_name desc;Select*from customer order by last_name;在 order by 子句中未指定升序或降序时,Oracle 按升序排序。5.Update、Delete 和 AlterUpdate 修改表中的数据 SQLUpdate customer set sales=23890.66 whe
39、re state_cd=MA;若没有用 where 指定修改的条件行,将修改表中全部行。Delete 删除行数据 Delete from customer,将删除 customer 表的所有记录;delete from customer wherestate_cd=CA,将删除state_cd 为 CA 的客户记录。Alter table 修改表结构此语句有如 Foxpro 中的 Modify stru 语句。在创建表后,用户可能想要增加表列。这时就要用到 alter table 命令了。Alter table customer add(sale_date date);将成功地把表列 sale
40、_date 加到表 customer 中。Alter table x modify(col date),改变一个已存在表列的数据类型。6连接两个表现实中,用户需要的大量数据往往存放在多个表中。很多情况下需要处理多个表。例如,customer 表中只存放州代码(state_code),然而用户还想知道州名,这时需要将表customer 与表 state 连接。这就要用到表的连接。通过定义,Oracle 一类的关系数据库允许用户基于公共域连接两个或更多表。这些公共域通常称为键域(key field)。有两种类型的键:主键(primary)和外部键(foreign)。主键使表中的数据行保持唯一。在表
41、 state 中,state_cd 就是主键。表 customer 中也包含有 state_cd,此时的 state_cd就是外部键。一个表的外部键用于从其他(foreign)表中获取信息。SQLselect*right.col,left.col from x right,y leftwhere right.col=left.col;五内部函数数值型函数函数返回值样例 显示Abs(n)N 的绝对值 Select abs(-321)from dual;321Ceil(n)大于等于数值 n 的最大整数 Select ceil(10.6)from dual;11Floor(n)小于等于数值 n 的最
42、大整数 Select floor(10.6)from dual;10Mod(m,n)M 除以 n 的余数,若 n=0 返回 n Select mod(7,5)from dual;2Power(m,n)M 的 n 次方 Select power(3,2)from dual;9Round(n,m)将 n 四舍五入,保留小数点后 m 位 Select round(1234.5678,2)from dual1234.57Sign(n)N=0,返回 0;n0,返回 1;nshow all;appinfo is ON and set to SQL*Plusarraysize 15autocommit OF
43、Fautoprint OFFautotrace OFFshiftinout INVISIBLEblockterminator.(hex 2e)btitle OFF and is the 1st few characters of the next SELECT statementcmdsep OFFcolsep compatibility version NATIVEconcat.(hex 2e)copycommit 0COPYTYPECHECK is ONdefine&(hex 26)echo OFFeditfile afiedt.buf embedded OFF .1).行和页的大小 se
44、t linesize set pagesize 例:SQLset linesize 80;SQLset pagesize 25;2)页头标、页脚标 ttitle btitle 例:(connect as scott)SQLttitle Database Technoloies|Customer Report;SQLselect empno,ename from emp;SQLbtitle-Sample.sql-;SQLselect empno,ename from emp;|表示换行。3).SQL*Plus 结果到文件 spool 如:spool c:tempout.list这个输出将放在 s
45、pool 命令指定的文件中。为停止假脱机(spooling),可用命令spool off 或 spool out。后者关闭输出文件并打印输出。4).格式化输出列表column大多数情况下,用户需要格式化实例的表列数据。Column 命令可完成这项工作。下面我们先执行两条格式化命令,然后再查询customer 表。SQLcolumn last_name format a8 wrap heading Last|Name;SQLcolumn state_cd format a8 heading State|Code;8表示显示宽度,a表示每个位置只能是字符 wrap 说明若 last_name 长度
46、大于 8 个字符,多余的字符显示下一行的对应位置。Heading 部分告诉 SQL*plus,last_name 的列标。现在我们查询一下 customer 表来看不下输出效果:SQLselect*from customer;Sun Jul 04 page 1 Database Technologies Customer ReportLast StateName Code SALES-Teplow MA 23445.67Abbev CA 6969.96Porter CA 6989.99Martin CA 2345.45Laursen CA 34.34Bambi CA 1234.55McGraw
47、 NJ 123.45 -sample.sql-本章小结:本章简要地介绍了 SQL 及其一些常用的命令,及SQL*Plus 的应用。有关 SQL 的更详细的使用说明可以参阅本第 4 章至第 8 章,课本在从建表到查询等操作都有较为详细的介绍,虽然书中的章节较长,但其内容简单易懂,由于课时所限无法在此逐一介绍。建议大家可以在自己的 PC 上安装个 Personal Oracle 8,按课本的例子,进行学习试验。第五章PL/SQ前面我们所使用的 SQL 语言,它不具备过程能力,但Oracle 通过 PL/SQL 语言对 SQL进行了过程语言功能的扩展。PL/SQL 是一种比较复杂的的程序设计语言,用
48、于从不同环境中访问 Oracle 数据库,。PL/SQL 是 Procedural Language/SQL(过程性语言的缩写)。正如其名所表达的,PL/SQL通过增加了用在其他过程性语言中的结构(construct)来对 SQL 进行了扩展,例如:变量和类型(包括预定义的和用户定义的)控制结构,例如 IF-THEN-ELSE 语句和循环。过程和函数对象类型和方法过程性结构与 Oracle SQL 无缝地集成在一起,这样便产生了一种结构化的强有力的语言。在使用 Oracle 的存储过程、数据库触发器、包和函数都要用PL/SQL 编写代码。因此,如果不了解 PL/SQL 就不能深入掌握 Orac
49、le。PL/SQL 具有高度的可移植性,在所有Oracle 平台上都是标准化的。因为其数据类型基于数据库服务器,所以语言完全与机器无关。你无需针对UNIX、Windows、Netware 等等去学习各种 PL/SQL。PL/SQL 程序可以在任何 Oracle Server 上编译和运行而无需进行任何修改。一PL/SQL 基础下面我们通过实例程序来学习PL/SQL:首先我们可以运行一下 hello.sql 这一简单的程序,此程序输出”Hello,world!”。Hello.sqlSET SERVEROUTPUT ONBEGIN DBMS_OUTPUT.enable;DBMS_OUTPUT.pu
50、t_line(Hello,world!);END;/启动 SQL*plus 并以 system 帐号连接 Oracle.SQLstart c:plssqlhello.sql用以上命令运行些程序。第 1 行让 SQL*Plus 写出服务器返回给它的内容。第 2 行和第 5 行提供当前块的作用范围。第 3 行打开输出机制。第 4 行打印簇“Hello,world!”。第 6 行执行这个无名 PL/SQL 块。服务器响应如下:Hello,World!PL/SQL 过程已成功完成.SQL在 PL/SQL 中字符串用单引号围起来,PL/SQL 对文字大小写唯一敏感的地方是在字符串是,对一些变量、命令等大