1、第 5 章 SQL*Plus 使用1第 5 章 SQL*Plus 使用Oracle11g 中提供了 OEM 和 SQL*PLUS 两种方式对数据库进行管理。OEM(Oracle Enterprise Manager,Oracle 企业管理器)提供一种基于 Web 界面的图形化的管理手段,特点是直观简单,但灵活性比较差。SQL*PLUS 则是通过执行命令的方式管理数据库,非常灵活且功能全面,同时能加深用户对复杂命令选项的理解。因此 SQL*PLUS 是数据库管理人员通常采用的一种管理方式。通过 SQL*Plus 可运行 SQL 语句和 PL/SQL 块来处理数据和生成报表,同时可执行数据库管理操
2、作。本章将主要介绍 SQL*Plus 一些常用功能和命令的使用,为后边的章节奠定一个基础。5.1 用 SQL*PLUS 与数据库交互5.1.1 SQL*Plus 的主要功能SQL*Plus 工具主要用来做数据查询和数据处理。利用 SQL*Plus 可将 SQL 和 Oracle 专有的 PL/SQL 结合起来进行数据查询和处理。利用 SQL*Plus 工具可实现以下操作: 对数据库进行管理。 启动/停止数据库实例 连接数据库,定义变量。 对 SQL 语句、PL/SQL 块执行插入、修改、删除、查询、运行和调试操作。 对查询结果的格式化、运算处理、保存、打印以及输出 Web 格式。 显示任何一个
3、表的字段定义 与终端用户进行交互。5.1.2 启动 SQL*Plus 连接数据库1用 SQLPLUS 命令连接数据库在使用 SQL*Plus 之前必须先启动 SQL*Plus。基本步骤如下:(1)依次选择【开始菜单】 |【程序】| 【Oracle-OraDb11g_home1】 |【应用程序开发】| 【SQL*Plus】命令,打开 SQL*Plus 的主界面。(2)输入相应的用户名和登录密码,这是在安装 Oracle 时指定的。输入正确的用户名和密码后,按 Enter 键,SQL*Plus 将连接到相应的数据库。例如以 System 用户登录,登 录密码是安装时确定的密码,如图 5.1 所示。
4、第 5 章 SQL*Plus 使用2图5.1 SQL*Plus登录界面也可以通过运行命令窗口启动 SQL*Plus。打开【开始菜单 】 |【运行】 ,出现运行对话框。此时有两种选择:一是在运行对话框里输入 cmd 命令,打开命令提示窗口,在窗口中输入 SQLPLUS 命令启动 SQL*Plus 工具,如图 5.2 所示;图5.2 通过cmd 命令启动sqlplusC:Documents and SettingsOwnersqlplus system/passwordSQL*Plus: Release 11.1.0.6.0 - Production on 星期四 4 月 22 09:35:19
5、2010Copyright (c) 1982, 2007, Oracle. All rights reserved.连接到:Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL二是在运行对话框里直接输入 SQLPLUS 命令来启动 SQL*Plus 工具,如图 5.3 所示。第 5 章 SQL*Plus 使用3图5.3 通过运行对话框直接启动SQL*
6、Plus SQLPLUS 命令的基本语法如下:sqlplus username/password server 命令中方括号里的参数为可选项。其中 username 表示要登录的数据库用户名,password 为相应用户密码,server 用于连接到远程数据库时指定网络服务名。当连接到本地数据库时不需要指定网络服务名。如果 sqlplus 命令中省略 username 或 password,那么命令对话框会提示输入相应的用户名和密码,如下所示。C:Documents and SettingsOwnersqlplusSQL*Plus: Release 11.1.0.6.0 - Productio
7、n on 星期四 4 月 22 09:39:18 2010Copyright (c) 1982, 2007, Oracle. All rights reserved.请输入用户名: system输入口令:连接到:Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing optionsSQL2连接命令(1)、CONNCET 命令CONNECT 把当前事务提交到数据库,断开当前用
8、户连接并用指定的用户名重新连接到 Oracle。 CONNECT 命令的基本语法为:CONNECT username/passwordconnect_identifier AS SYSOPER|SYSD第 5 章 SQL*Plus 使用4BA 其中 CONNECT表示 CONNECT 命令可以简写为 CONN。 SQL*PLUS 里命令的都可以采用简写的形式,但 对初学者来说,完整的命令可以帮助我们理解和记忆。username 和 password 是可选参数,如果省略的话,SQL*PLUS 会提示输入,如下:SQL connect请输入用户名: system输入口令:已连接。SQLconne
9、ct_identifier 用于指定连接到一个远程数据库,例如使用用户名 HR 和口令 HR 连接到 Oracle Net 别名为 FLEETDB 的数据库。HR 这个用户是 Oracle 自带安装的一个示例模式,默认的 HR 用户是被锁定的,在使用该用户之前需要对它进行解锁操作,具体步骤如下:先以 system 身份连接到数据库SQL connect system/password已连接。解锁 用户帐 号SQL alter user hr account unlock;用户已更改。 注:命令里的 user 表示 HR 属于 user 这个表空间修改其登 录 密码 SQL alter user
10、 hr identified by hr;用户已更改。 对于一个刚解锁的用户来说,其密 码都是过期的,必 须 要修改其密码以保证密码有效。如果此处不修改密码,在用该用户登录时会提示密码过 期和修改密码。以 HR 用户连接到 FLEETDB 数据库CONNECT HR/HRFLEETDB AS SYSOPER|SYSDBA是可选项,表示用户以 SYSOPER 或 SYSDBA 的身份登录数据库。SYSOPER 和 SYSDBA 是两个特权身份,具有最高的系统权限。 SYSDBA 身份默认是连接到 SYS 模式,而 SYSOPER 身份默认连接到 PUBLIC 模式。例如 HR 以 SYSDBA
11、连接数据库:SQL connect hr/hr as sysdba;第 5 章 SQL*Plus 使用5已连接。(2)、DISCONNECT 命令DISCONNECT 命令用于短开已经存在的数据库连接,但并不会退出 SQL*PLUS。基本语法为:PASSWORD username示例如下:SQL disconnect从 Oracle Database 11g Enterprise Edition Release 11.1.0.6.0 - ProductionWith the Partitioning, OLAP, Data Mining and Real Application Testing
12、 options 断开SQL(3)、PASSWORD 命令PASSWORD 命令用于修改用户密码。任何用户都可以修改自身密码,但如果要修改其他用户的密码,则必须以 SYS 或 SYSTEM 身份登录。基本语法为:PASSWORD username例如将 HR 用户的密码改为 123,操作如下:SQL connect hr/hr已连接。SQL password hr更改 hr 的口令旧口令:新口令:重新键入新口令:口令已更改SQL connect hr/123已连接。SQL5.2 使用 SQL*Plus 的编辑功能SQL*PLUS 缓冲区用来临时存放用户最近运行的 SQL 语句或 PL/SQL
13、块。通过在缓冲区中存储这些命令,用户能够重新调用、编辑和运行那些最近输入的 SQL 语句。5.2.1 SQL 语句、PL/SQL 块与 SQL*Plus 命令的区别在 SQL*Plus 中可以运行三种类型的命令:SQL*Plus 命令、SQL 语句和 PL/SQL 块。但三者之间是有区别的。 SQL*Plus 命令主要用来格式化查询结果、设置选择、编辑及存储 SQL 命令、以设第 5 章 SQL*Plus 使用6置查询结果的显示格式,并且可以设置环境选项。 SQL 语句是以数据库为操作对象的语言,主要包括数据定义语言 DDL、数据操纵语言 DML 和数据控制语言 DCL 以及数据存储语言 DS
14、L。当输入 SQL 语句后,SQL*Plus 将其保存在内部缓冲区中。SQL*PLUS 命令输入完毕后可直接执行,而当 SQL 命令输入完毕时,需要在末尾加上分号(;),否则 SQL*PLUS 不识别。也可以采用换行并输入斜线(/)来表示 SQL 命令完毕。 例如:SQL select table_name from user_tables;或者SQL select table_name from user_tables2 / 由于 SQL 不具备过程控制功能,所以,为了能够与其他语言一样具备面向过程的处理功能,在 SQL 中加入了诸如循环、选择等面向过程的处理功能,由此形成了PL/SQL。所
15、有 PL/SQL 语句的解释均由 PL/SQL 引擎来完成。PL/SQL 块同样以数数据为操作对象,使用 PL/SQL 块可编写过程、触发器和包等数据库永久对象。5.2.2 编辑命令在 SQL*PLUS 中执行的 SQL 语句或 PL/SQL 块会临时存放在 SQL 缓冲区中,直到新的语句将其覆盖。通过 SQL*PLUS 的编辑命令,可以显示、修改和运行这些存放在缓冲区中的语句。1LIST 命令LIST 命令用于列出 SQL*PLUS 缓冲区中指定的一行或若干行内容。基本语法:LIST n|n m|n *|n LAST|*|* n|* LAST|LAST n 和 m 表示行的序号,*表示当前行
16、,LAST 表示最末行。 省略所有参数的 LIST 命令表示显示所有行内容。举例:假定当前在 SQL*PLUS 中输入了如下查询内容:SQL select * from jobs2 where job_id=ST_MAN3 and job_title=Stock Manager;例 1:显示缓冲区所有内容,用不带参数的 LIST 命令SQL list1 select * from jobs2 where job_id=ST_MAN3* and job_title=Stock Manager例 2:列出缓冲区中的某一行的内容,需要在 LIST 命令后指定行号SQL list 22* where
17、job_id=例 3:列出缓冲区中的某几行的内容,需要在 LIST 命令后指定起始行号和结束行号。第 5 章 SQL*Plus 使用7SQL list 2 32 where job_id=ST_MAN3* and job_title=Stock Manager例 4:列出缓冲区中当前行到最末行的内容,需要引用*和 LAST 参数SQL list * last2 where job_id=ST_MAN3* and job_title=Stock Manager2n 命令n 命令用于指定缓冲区的当前行。在 SQL*PLUS 中执行 SQL 语句时,默认情况下是将最后一行命令作为当前行。如果要指定其
18、它行为当前行,就需要用到 n 命令,其中 n 代表行号。例如:SQL list1 select * from jobs2 where job_id=ST_MAN3* and job_title=Stock ManagerSQL 22* where job_id=ST_MANSQL 11* select * from jobs3CHANGE 命令CHANGE 命令用于修改缓冲区当前行中第一次出现的指定文本。 基本语法:CHANGE / old / new old 表示当前行需要替换 的部分, new 是用来替换的内容举例:假定当前在 SQL*PLUS 中输入了如下查询内容SQL select *
19、 from jobs where job_id=ST_MAN and job_title=Stock Manager; 如果 old 在当前行里多次出 现,只有第一个出 现的 old 被替换掉了。例 1:用 emp 替换掉当前行里的 jobSQL change /job/emp1* select * from emps where job_id=ST_MAN and job_title=Stock Manager可以看出只有第一个出现的 job 被替换成了 emp。 如果 old 具有前缀“.”,将匹配第一次出 现的 old 以及 old 之前的所有文本。如果 old 具有后缀“.”,将匹配第
20、一次出 现的 old 以及 old 之后这一行中的所有文本。如果 old 中间 包含有一个“.”,将匹配 old 的前面部分到 old 的后面部分之间的所有第 5 章 SQL*Plus 使用8内容。 例 2:用ST_CLEAR 替换掉最初行里ST_MAN以及其后边的部分。SQL change /ST_MAN./ST_CLEAR;1* select * from jobs where job_id=ST_CLEAR例 3:用 ST_CLEAR 替换掉最初行里第一个 里的内容。SQL change /./ST_CLEAR1* select * from jobs where job_id=ST_C
21、LEAR and job_title=Stock Manager 如果省略掉 new,则表示删除 old 的内容。例 4:删除最初行里 where job_id=ST_MAN and job_title=Stock Manager这一部分。SQL change /where job_id=ST_MAN and job_title=Stock Manager1* select * from jobs4APPEND 命令APPEND 命令用于将文本添加到缓冲区中当前行的最后面。基本语法:APPEND text 例如,当前输入一条查询语句:SQL select * from jobs;在当前 SQL
22、 语句的末尾添加“where job_id=ST_MAN”语句:SQL append where job_id=ST_MAN1* select * from jobs where job_id=ST_MAN 注意:如果需要在原 SQL 语句和新添加的文本之间空一个空格,则需要在APPEND 命令和文本之间留两个空格,如上例所示。5DEL 命令DEL 命令用于删除 SQL*PLUS 缓冲区中指定的一行或若干行内容,其用法和 LIST 类似。基本语法:DEL n|n m|n *|n LAST|*|* n|* LAST|LAST n 和 m 表示行的序号,*表示当前行,LAST 表示最末行。 省略所
23、有参数的 DEL 命令表示删除当前行。举例:假定当前在 SQL*PLUS 中输入了如下查询内容:SQL select * from jobs2 where job_id=ST_MAN3 and job_title=Stock Manager;例 1:删除缓冲区中当前行的内容第 5 章 SQL*Plus 使用9SQL list1 select * from jobs2 where job_id=ST_MAN3* and job_title=Stock ManagerSQL delSQL list1 select * from jobs2* where job_id=ST_MAN例 2:若要删除缓
24、冲区中的连续多行内容,需要在 DEL 命令后指定起始行号和结束行号。SQL list1 select * from jobs2 where job_id=ST_MAN3* and job_title=Stock ManagerSQL del 2 3SQL list1* select * from jobs6INPUT 命令INPUT 命令在缓冲区中当前行后面新增一行。基本语法:INPUT text 举例:假定当前在 SQL*PLUS 中输入了如下查询内容:SQL select * from jobs; 新增的内容 text 与 INPUT 之间要留一个空格。 如果新添加的行以空格开头,则在命令
25、和 text 间要多输入一个空格。 例 1:在缓冲区当前行后面新增一行内容“where job_id= ST_MAN ”SQL list1* select * from jobsSQL input where job_id=ST_MAN;SQL list1 select * from jobs2* where job_id=ST_MAN 如果要在当前行后面添加多个行,可只输入 INPUT。然后 INPUT 将提示输入每行的文本。要退出 INPUT 可输入一个空行或一个句点。 例 2:在缓冲区当前行后面新增两行内容SQL list1* select * from jobs第 5 章 SQL*Pl
26、us 使用10SQL input2 where job_id=ST_MAN3 and job_title=Stock Manager;JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY- - - -ST_MAN Stock Manager 5500 8500SQL list1 select * from jobs2 where job_id=ST_MAN3* and job_title=Stock Manager7EDIT 命令EDIT 命令调用操作系统的文本编辑器编辑缓冲区中的内容或指定的文件。 基本语法:EDIT file_name.ext file_name.e
27、xt 表示要编辑的文件(通常是一个脚本)。 如果省略了需要编辑的文件后缀名, SQL*Plus 将使用默认的命令文件扩展名(通常是 SQL)。 只输入 EDIT 而不包括文件名可使用操作系统文本编辑器编辑 SQL 缓冲区中的内容。 例 1:编辑 E:/start Oracle11g.bat 文件。SQL edit E:/start_Oracle11g.bat如图 5.4 所示,EDIT 命令启动 Windows 系统的记事”编辑器来打开该文件。图5.4 用EDIT命令启动记事本编辑文件例 2:将缓冲区中的内容用记事本打开进行编辑第 5 章 SQL*Plus 使用11SQL list1 sele
28、ct * from jobs2 where job_id=ST_MAN3* and job_title=Stock ManagerSQL edit已写入 file afiedt.buf此时缓冲区中的内容将在记事本编辑器里打开并可进行编辑,如图 5.5 所示。图 5.5 用EDIT命令在记事本里编辑缓冲区的内容通过记事本里进行了编辑操作后,退出记事本编辑器时 SQL*PLUS 会将编辑后文件的内容重新读回到缓冲区中。例如在刚才打开的记事本中将ST_MAN修改为ST_CLERK后保存退出,修改后的内容将会重新读入到缓冲区。SQL list1 select * from jobs2 3and job
29、_title=Stock Manager3* where job_id=ST_MANSQL edit已写入 file afiedt.buf1 select * from jobs2 3and job_title=Stock Manager3* where job_id=ST_CLERK5.2.3 文件操作命令如果 SQL 缓冲区中的内容需要经常执行,那么可以将这些内容保存到外部的 SQL 脚本文件中。这样一方面可以减少键盘输入的麻烦,另一方面也可规避很多输入错误。下面介绍几种常用的处理 SQL 脚本的相关命令。1SAVE 命令SAVE 命令把 SQL 缓冲区中的内容保存到操作系统的一个文件中(
30、SQL 脚本)基本语法:SAVE file_name.ext CREATE|REPLACE|APPEND 第 5 章 SQL*Plus 使用12 file_name.ext用于指定保存的文件名称和类型,如果省略后缀,默 认是保存为 sql脚本文件。例 1:将缓冲区里的 SQL 语句保存到 E:/mySQL.sql 文件中。SQL list1 select * from jobs2 where job_id=ST_MAN3* and job_title=Stock ManagerSQL save e:/mySQL已创建 file e:/mySQL.sql创建的文件内容如图 5.6 所示图5.6
31、创建的mySQL.sql 文件 CREATE 参数表示用指定的名字创建新的文件。这是默认行为。 REPLACE 参数表示将保存的内容替换到已存在的文件中。如果该文件不存在,则创建该文件。例 2:将缓冲区中新的内容覆盖到 E:/mySQL.sql 文件中SQL select job_id from jobs;。 。SQL list1* select job_id from jobsSQL replace e:/mySQL.sqlSQL save e:/mySQL.sql replace已写入 file e:/mySQL.sql被覆盖后的 mySQL.sql 文件如图 5.7 所示 APPEND
32、参数表示将保存的内容添加到指定文件末尾。例 3:将缓冲区中新的内容添加到 E:/mySQL.sql 文件的末尾。SQL list1 select * from jobs第 5 章 SQL*Plus 使用132 where job_id=ST_MAN3* and job_title=Stock ManagerSQL save e:/mySQL append已将 file 附加到 e:/mySQL.sql增加新内容后的 mySQL.sql 文件如图 5.8 所示图5.7 被覆盖以后的mySQL.sql文件图5.8 增加新内容后的mySQL.sql文件2GET 命令GET 命令正好和 SAVE 命令
33、相反,将指定文件中的内容加载到 SQL 缓冲区中。 基本语法:GET file_name.ext LIST|NOLIST file_name.ext为指定加载的文件,省略后 缀时表示是 sql 脚本文件。 LIST参数表示加载后显示加载的内容(次参数为默认值 );NOLIST参数则禁止显示加载的内容。例 1:将 E:/mySQL.sql 文件内容加载到 SQL 缓冲区并显示SQL get e:/mySQL1 select job_id from jobs2 /3 select * from jobs4 where job_id=ST_MAN5* and job_title=Stock Mana
34、ger第 5 章 SQL*Plus 使用145.2.4 加入注释编写命令代码时一个好的习惯是在语句中添加注释,来对该该语句的相关内容作一个注解。在 SQL*PLUS 中可以通过三种方式添加注释。 注释的内容只是辅助参考,并不成 为执行命令的一部分。1单行注释-符号可以实现在单行里添加注释。SQL select * from jobs where job_id=ST_MAN-这是一条查询语句 ;JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY- - - -ST_MAN Stock Manager 5500 85002多行注释/* 注释内容*/ 符号可以实现添加多行注释
35、语句。例如:SQL select * from jobs2 /*这是一条简单查询语句,3 查询的是 jobs 表;4 下面部分是查询条件*/5 where job_id=ST_MAN;JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY- - - -ST_MAN Stock Manager 5500 85003REMARK 命令REMARK 命令在脚本中添加一行注释。与前面两种注释符号不同的是,用 REMARK命令添加注释必须是在单独的一行中,不能即有注释又包含其他命令。例如:用 REMARK 命令在 e:/myRemark.sql 脚本里添加注释,如图 5.9 所示,
36、其运行结果如下:SQL start e:/ myRemark.sqlJOB_ID JOB_TITLE MIN_SALARY MAX_SALARY- - - -ST_MAN Stock Manager 5500 8500第 5 章 SQL*Plus 使用15图5.9 REMARK命令的用法5.2.5 运行命令用户如果需要重复执行当前缓冲区的 SQL 语句或 PL/SQL 块,或者保存在外存里的脚本文件,可以通过相应运行命令来执行。1RUN 和/命令RUN 和/命令列出并执行当前保存在 SQL 缓冲区中的 SQL 语句或 PL/SQL 块。 基本语法:RUN 或: / RUN 命令执行缓冲区 SQ
37、L 语句时,会先列出该 SQL 语句; /命令直接运行缓冲区的 SQL 语句而不将该 SQL 语句显示出来。例 1:用 RUN 命令运行SQL list1* select * from jobs where job_id=ST_MANSQL run1* select * from jobs where job_id=ST_MANJOB_ID JOB_TITLE MIN_SALARY MAX_SALARY- - - -ST_MAN Stock Manager 5500 8500例 2:用/命令运行SQL list1* select * from jobs where job_id=ST_MANS
38、QL /JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY- - - -ST_MAN Stock Manager 5500 8500第 5 章 SQL*Plus 使用162START 和 命令START 和命令用于运行 sql 脚本文件。基本语法:START file_name.ext 或者 file_name.ext例 1:运行 E:/mySQL.sql 脚本文件。SQL start e:/mySQL或者:SQL e:/mySQL3命令命令和 命令类似,也用于运行 sql 脚本文件。但 命令除了在 SQL*PLUS 里使用外,还可以用在脚本文件里,用来调用与该脚本文
39、件在同一目录下的其它脚本文件。例 1:假设 E:/下有两个脚本文件 a.sql 和 b.sql,在 a.sql 文件中有如下 SQL 语句:select * from jobs where job_id=ST_MAN and job_title=Stock Manager;在 b.sql 文件中用 命令调用 a.sql 文件,如下: a.sql在 SQL*PLUS 中执行命令来运行 b.sql,结果如下:SQL e:/b.sqlJOB_ID JOB_TITLE MIN_SALARY MAX_SALARY- - - -ST_MAN Stock Manager 5500 8500SQL list5
40、.2.6 编写交互命令前面的文件操作命令介绍了如何通过 windows 的文件编辑器来编辑 SQL 脚本语句。有的时候为了使 SQL 脚本可以根据使用者不同的输入参数得到不同的结果,需要用到和使用者进行交互的命令。下面将介绍 SQL*PLUS 常用的交互命令。1原值 1: select * from jobs where job_id= 如果变量是为字符类型列或日期类型列提供数据, 则必须 用单引号引住,例如上例的job_id=输入 id 的值: ST_MAN输入 ms 的值: 5500原值 1: select * from jobs where job_id=输入 id 的值: HR_REP
41、输入 ms 的值: 4000原值 1: select * from jobs where job_id=原值 1: select job_id,min_salary from jobs where min_salary=原值 1: select * from jobs where job_id=原值 1: select * from jobs where job_title=原值 1: select * from jobs where job_title=”按下 ENTER 键盘将执行该操作。JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY- - - -ST_MAN
42、 Stock Manager 5500 8500SQL start e:/a.sql下面要进行的是一个查询语句。该语句内容是:“select * from jobs where job_id=ST_MAN;”按下 ENTER 键盘将执行该操作。JOB_ID JOB_TITLE MIN_SALARY MAX_SALARY- - - -ST_MAN Stock Manager 5500 85006ACCEPT 命令ACCEPT 命令用于定义相应的变量来接收用户的屏幕输入。ACCEPT 命令比 DEFINE命令更加灵活,可以定义 CHAR、NUMBER、和 DATA 类型变量,还可以指定输入提示、输
43、入格式及隐藏输入内容等。基本语法:ACCEPT variable NUMBER|CHAR|DATE PROMPT text|NOPROMPT HIDE ACCEPT 命令定义的变量,若省略 变量类型参数的话 ,默认是 CHAR 类型 ACCEPT 命令可以和 PROMPT 提示命令结合使用。例 1:用 ACCEPT 命令定义字符型变量 id 和数值型变量 ms,并从屏幕接收用户的输入来完成查询。SQL accept id prompt 请输入工作编号:请输入工作编号:ST_MANSQL accept ms number prompt 请输入最低工资数:请输入最低工资数:5500SQL sele
44、ct * from jobs where job_id=原值 1: select * from jobs where job_id=原值 1: select * from jobs where min_salary=在 SQL*PLUS 中不能直接给绑定变量赋值,可以通过 EXECUTE 命令或者在 PL/SQL块中完成赋值。例 1:用 EXECUTE 命令对绑定变量赋值SQL variable myMoney numberSQL execute :myMoney:=4000PL/SQL 过程已成功完成。SQL print myMoneyMYMONEY-4000例 2:通过 PL/SQL 块对
45、绑定变量赋值SQL variable myMoney numberSQL begin2 :myMoney:=4000;3 end;4 /PL/SQL 过程已成功完成。3显示绑定变量不带任何参数的 VARIABLE 命令将显示所有定义的绑定变量。SQL variable变量 mymoney数据类型 NUMBER第 5 章 SQL*Plus 使用23如果要查看定义的绑定变量具体的值,需要用 PRINT 命令。SQL printMYMONEY-4000 不带任何参数的 PRINT 命令显示所有定义的绑定变量的具体值。5.3 使用 SQL*Plus 格式化查询结果用户可以通过 SQL*PLUS 来生成查询报表。在 SQL*PLUS 中提供了很多用于格式化查询结果的命令,通过这些命令可以实现诸如重新设置列标题、重新定义值的显示格式和显示宽度为报表增加头标题和底标题等操作。下面介绍一些常用的格式化查询结果的命令。5.3.1 格式化列SQL*PLUS 里用 COLUMN 命令来对查询结果的列部分进行格式化操作。COLUMN 命令基本语法如下:COLUMN column|expr option .其中 column|expr 是查