功能介绍

Oracle SQL Handler，是专为Oracle数据库开发人员及操作人员精心打造的一款Oracle开发工具(客户端工具)。国产原创，精品奉献，其优点特点如下：
(1) 跨平台，能运行于平台 Windows(WIN7,XP...)、Linux 、Mac OS；
(2) 不需要安装Oracle客户端，解压即用，通过提供的JDBC直接连接服务器；
(3) 超智能的SQL编辑器，具有代码跟踪提示功能，弹出提示窗口列出关键字、关键字组合、函数名、列名、对象名、对象类型等，极大地提高SQL编辑效率；
(4) 超方便实用的工作表用来显示和操作SELECT语句的查询结果，象操作Excel表格一样方便地选择行/列/单元格数据，可以将工作表的数据修改写入数据库表。另外，工作表还有单条记录操作、多功能拷贝、数值统计、查找替换等实用功能；
(5) 能方便导出 XLS、CSV、INSERT Statement、HTML、XML等多种格式数据；
(6) 方便操作常用数据字典如表、视图、索引、过程、函数、触发器等(能显示和编辑编译PL/SQL代码)；
(7) 中英文双语界面并能随时切换，个性化界面设置，界面简洁清爽；
(8) 运行语句“DESC tableName”清晰地显示表的所有逻辑结构信息，包括列信息、所有约束、索引、子表及触发器等；
(9) 运行语句“SCHEMA objectName”显示表或视图的DDL源码；
(10) 以缩进的阶梯格式清晰地显示SQL的解释计划；
(11) 能运行和调试PL/SQL语句，能精确定位到错误所在的行列位置；
(12) SQL格式美化，将杂乱的语句美化成缩进的美观格式；
(13) 多线程多连接，会话在运行中可以中断，或编辑，或创建新会话；
(14) 监控批量SQL语句的运行，在运行中可暂停、更正等；
(15) 连接配置简单，自动重新连接；
(16) 占用系统资源极少，启动快，连接快，运行快；
(17) 高效的语句块操作，高亮显示配对括号；
(18) 功能实用，操作简便；
......
总之，本工具确实 “小巧、实用、方便、高效”，正是Oracle数据库开发人员及操作人员所需要的强有力的工具！

主要功能如下：

- 将 SELECT 语句的查询结果显示在工作表，可以直接对查询结果进行再操作，如 修改、插入行、删除行、提交（将表格中的数据改变写入相应的数据库表中）、多功能拷贝、将选择的单元格数据导出为 XLS /CSV /INSERT Statement /HTML /XML 等格式、单条记录操作、能方便地查找\替换单元格中的数据、数值统计、行列移动、列排序等；能方便地查看/编辑大型的文本字段（如 CLOB、 LONG）

- 智能的SQL编辑器：自动弹出提示窗口，列出关键字、关键字组合、函数名、列名、对象名、对象类型、参数、包内的过程和函数，提高SQL编辑效率。例如：
  （1）输入字串“sel”，一秒钟后列出以“sel”开头的所有关键字、关键字组合（如 SELECT, SELECT DISTINCT, SELECT * FROM）、函数及对象名；
  （2）输入字串“abc”+“.”，如果“abc”是一表名/视图，或其别名，则列出表/视图的所有列名及数据类型；如果“abc”是一用户名，则列出该用户的所有对象；如果“abc”是一包名，则列出包内的过程和函数；
  （3）输入字串“grant”+空格，列出所有权限和角色，再输入“on”+空格，列出所有对象，再输入“to”+空格，列出所有用户名；

- 彩色的SQL编辑器，增强可读性：
  （1）关键字、注释块、引号内字符串、操作符、特殊字符等，用不同的彩色字体加以区别；
  （2）如果光标前面是一个括号，高亮度显示配对的括号

- 支持批量SQL语句的运行：用监控器监控每条语句的运行，在运行过程中可以中断/暂停/继续正在运行的语句，甚至可以更正出错误的语句

- 方便高效的块操作，以满足特殊需求：
  （1）“Format SQL” 按钮能将语句块中杂乱语句以缩进的格式进行重新编排，即格式美化；
  （2）“Explain Plan” 按钮能快速地显示语句的执行计划；
  （3）“Export” 按钮能将SQL编辑器中的 SELECT 语句块直接导出为 XLS /CSV /INSERT Statement /HTML /XML 等格式，方便于数据移植、备份、打印及存档等；
  （4）支持列块操作；
  （5）加上/去掉注释标记、加上/去掉引号、增加/减少缩进、大小写转换等

- 运行语句 “desc [user.]objectName[@dbLink]” 或 Ctrl+鼠标点击字串“[user.]objectName[@dbLink]”，如果是一表名，则能清楚地显示表的列信息（包括列名称、数据类型及长度、默认值、非空）、索引、约束条件（主键、唯一键、检查键、子表、触发器、外键、甚至外键的外键）

- 运行语句 “schema [user.]objectName[@dbLink]”，如果是一表名或视图名或物化视图（快照），则显示其生成的脚本/语句

- 支持 PL/SQL 语句（包括 Procedure、 Function、Trigger、 Package），能够显示 DBMS_OUPTPUT.PUT_LINE 的输出；能够给出错误信息，甚至光标能够精确定位错误所在的行列位置，方便于调试

- 多线程、多连接：可以创建多个会话/连接，多个会话可以同时运行，在运行过程中可以掌控其运行状态、可以随时中断之，在运行过程中可以继续从事编辑等工作，不必等待运行完毕才能编辑

- 提供对常用数据字典（如 表、视图、索引、同义词、约束、过程、触发器等）的常用操作。例如，输入 “%NAME” 或 “NAME%” 或 “%NAME%”，能查找当前用户或所有用户下的包含子串 “NAME” 的所有对象名，通过弹出菜单可以对每一个对象进行操作，如修改、删除、查看等

如何运行

- 如果是 Windows 系列的操作系统（WIN7,XP,Vista,NT...）：
  请参阅解压后的文件“How-to-start-in-Windows.txt”
  备注：从网上下载的 ZIP 文件大小约 23MB ，这个 ZIP 文件已经包含了 Windows 版的 JRE（版本为 1.6.0_30，在目录JRE1.6-for-Windows），解压到一目录然后鼠标双击文件 start-in-Windows.exe 或文件 start-in-Windows.bat 即可运行本工具（或在CMD命令窗口中运行其中之一）
  要求JRE的最低版本为 1.6，作者在ZIP文件中提供的JRE版本为 1.6.0_30（瘦身版 才20MB）, 建议用户直接使用这个提供的JRE，它支持 Windows 7 的配色方案。

- 如果是 Linux 系列的操作系统：
  请参阅解压后的文件“How-to-start-in-Linux.txt”

- 如果是 Mac 系列的操作系统：
  请参阅解压后的文件“How-to-start-in-Mac.txt”

如何配置

工具启动后首先进入 “Oracle 连接” 窗口，该窗口提供两种连接配置样本以方便用户第一次使用（样本提供了Oracle本机安装的用户SYS、SYSTEM及SCOTT的初始密码）。用户需要修改已有的连接设置（如主机、端口等），可以创建新的连接设置（在 “连接别名” 列表的输入栏中输入一新的别名），但不可以删除已有的连接设置。如果想更方便地修改、增加、删除连接设置，或连接设置比较复杂，则需要进入 “配置” 窗口去编辑。有两种途径进入 “配置” 窗口：一是点击 “Oracle 连接” 窗口右上方的 “配置” 图标按钮，二是点击工具条的 “配置” 图标按钮或 “配置” 菜单项。
“配置” 窗口提供两种类型的配置样本：

- 样本一：
  alias=Template-1;url=127.0.0.1:1521:orcl

- 样本二：
  alias=Template-2;url=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=oracleserviceorcl)))

字串 “Template-1” 为连接别名（又叫助记符），它将出现在 “Oracle 连接” 窗口的下拉列表中，用来区分其它的连接；
字串 “127.0.0.1“ 为 Oracle 服务器主机的 IP地址或机器名；
字串 “1521” 为端口号（port）；
字串 “orcl“ 为 SID
用户可以拷贝并修改样本去创建数据库的连接，
或
通过点击 “新建” 按钮则生成一行 “alias=[alias_name];url=[host]:[port]:[sid]” ，
再替换字串 “[alias_name]”，“[host]”，“[port]”，“[sid]”。
注：（1）您只需要修改上述 4 个字串即可，其它字串请不要更改，还有，连接设置要求一行写完，不能折行，否则不能成功连接；如果连接设置比较复杂（比如使用服务名而不是SID），要求使用样本二格式。
（2）如果要以“SYSDBA”权限进行连接，则在“连接”窗口中的用户名后面加上字串“ AS SYSDBA”或选中复选框“连接为 SYSDBA” ；
如果要以“SYSOPER”权限进行连接，则只能在“连接”窗口中的用户名后面加上字串“ AS SYSOPER” ；
如果是“SYS”用户，必须使用 SYSDBA权限，如果是“SYSTEM”用户，必须使用SYSDBA或SYSOPER权限。

如何使用

通过 “Oracle 连接” 窗口成功连接 Oracle 服务器后就可以操作数据库了。
由于本工具是一图形界面工具，因此图形界面的键盘及鼠标的通用操作同样也适用于本工具（可以通过菜单 “GUI/界面外观” 选择/切换所喜欢的界面语言、风格和背景颜色）。
作者采用顺序 “SQL编辑器 > 菜单/工具条按钮 > 工作表 > 监控器 > 数据字典 > 信息栏/进度条/状态栏” 对每一部分作详细介绍：

- SQL编辑器
  用来输入 SQL 语句及命令，包括 SELECT、UPDATE、INSERT、DELETE、CREATE、ALTER、DROP、TRUNCATE、GRANT、REVOKE、LOCK、COMMIT、ROLLBACK 等 Oracle SQL 语句。另外，本工具提供以下命令语句：
  # desc [user.]objectName[@dbLink]
  如果 objectName 是一视图或物化视图（快照），则弹出一窗口显示视图的列信息（包括列名称、数据类型及长度）；如果 objectName 是一表名，则显示表的结构信息，包括列信息（列名称、数据类型及长度）、索引、约束条件（主键、唯一键、检查键、子表、触发器、外键、甚至外键的外键）；如果是其它类型的，则弹出消息框指出其类型名称。
  （提示：有一种简便快捷的方法查看对象的信息，即在SQL编辑器或监控器的Log 区或 Amend 区中，按下 Ctrl键+鼠标点击字符串“[user.]objectName[@dbLink]”，则弹出一窗口）
  # describe [user.]objectName[@dbLink]
  等同于命令 “desc [user.]objectName[@dbLink]”
  # schema [user.]objectName[@dbLink]
  如果 objectName 是一表名或视图名或物化视图（快照），则在监控器中显示其脚本语句，即表或视图是用什么脚本/语句如何创建的（包括索引、约束条件）；如果 objectName 其它类型的，则指出其类型名称。
  # explain plan for SQL
  快速地显示SQL的解释计划（又叫执行计划）。通过解释计划可以清晰地看出索引的使用情况、是不是有全表扫描等信息，进而判断这条SQL语句的性能（提示：工具条的 “Explain Plan” 按钮可以直接查看选定SQL的解释计划）
  # commit
  提交 UPDATE、INSERT、DELETE 等语句的操作
  # rollback
  撤消/回滚 UPDATE、INSERT、DELETE 等语句的操作
  # roll
  等同于语句 “rollback”
  # set autocommit on
  设置 Autocommit 的状态为 ON（状态栏显示 “Autocommit: ON”），自动提交 UPDATE、INSERT、DELETE 等语句的操作，不再需要执行语句 “commit”
  # set autocommit off
  设置 Autocommit 的状态为 OFF（状态栏显示 “Autocommit: OFF”，默认值为 OFF），不能自动提交 UPDATE、INSERT、DELETE 等语句的操作，需要执行语句 “commit” 才能提交
  # show autocommit
  显示 Autocommit 的状态（ON 或 OFF）
  # set timing on
  设置 Timing 的状态为 ON（状态栏显示 “Timing: ON”，默认值为 ON），则在监控器的 Log区中显示每条 SQL 的开始运行时间（格式为 “时:分:秒”）及消耗的时间（格式为 “时:分:秒.毫秒”）
  # set timing off
  设置 Timing 的状态为 OFF（状态栏显示 “Timing: OFF”），则在监控器的 Log区中不显示 SQL 的开始运行时间及消耗的时间
  # show timing
  显示 Timing 的状态（ON 或 OFF）
  # set echo on
  设置 Echo 的状态为 ON（状态栏显示 “Echo: ON”，默认值为 ON），则在监控器的 Log区中显示 SQL 的结果时，在结果的前面也显示对应的 SQL语句
  # set echo off
  设置 Echo 的状态为 OFF（状态栏显示 “Echo: OFF”），则在监控器的 Log区中只显示 SQL 的结果，在结果的前面不显示对应的 SQL语句（避免大量的Log输出对内存的消耗）
  # show echo
  显示 Echo 的状态（ON 或 OFF）
  # @filename
  不需要将文件中的SQL语句拷入SQL编辑器，而是直接去读并执行外部文件中的 SQL 语句及命令，此语句对大量SQL语句的运行很有用（注：要求完整的路径名加文件名，例如：“@D:\dir1\dir2\import.sql”）
  # @@filename
  等同于命令 “@filename”
  # run filename
  等同于命令 “@filename”
  本工具的SQL编辑器是一种彩色的文本编辑器：
  （1）关键字、注释块、引号内字符串、操作符、特殊字符等，用不同的彩色字体加以区别（注：/* 与 */ 用来注释多行的语句块；-- 为单行注释）
  （2）如果光标前面是一个括号，高亮度显示配对的括号（注：“(” 与 “)” 配对，“[” 与 “]” 配对，“{” 与 “}” 配对）
  本工具的SQL编辑器具备智能提示的功能：
  即只需输入部分字串，一秒钟后弹出提示窗口，列出关键字、关键字组合、函数名、列名、对象名、对象类型、包内的过程和函数，编辑SQL非常方便。分以下 3 种：
  （1）关键字、函数及对象的提示功能：
  即输入三个或三个以上的字母，稍等一秒钟，弹出提示窗口，列出以已输入字母开头的所有关键字、关键字组合、函数名及对象名。
  例如，输入字串“sel”，则提示窗口中列出以字串“sel”开头的所有关键字、函数及对象名，如关键字 “SELECT”，“SESSION” 等，如关键字组合 “SELECT”, “SELECT DISTINCT”, “SELECT * FROM” 等。
  （2）点符提示功能：
  即输入点符 “.”，稍等一秒钟，弹出提示窗口，列出列名，对象名，或包内的过程和函数。
  例如，输入字串“abc”+“.”
  （2.1）如果“abc”是一表名/视图，或其别名，则列出表/视图的所有列名及数据类型；
  （注：别名也可以是一虚拟表的别名，例如：“(select ... from ...) aliasName” ）
  （2.2）如果“abc”是一用户名，则列出该用户的所有对象；
  （2.3）如果“abc”是一包名，则列出包内所有的过程和函数；
  （2.4）如果“abc”是一序列号，则提示窗口包含两项： “CURRVAL” 及 “NEXTVAL”
  （3） 空格/逗号提示功能：
  即输入空格（或 TAB 键 或 Enter 回车键）或逗号，稍等一秒钟，弹出提示窗口，列出对象名、对象类型、参数。具体见如下：
  （3.1 ）“update”+空格，列出当前用户的所有表名/视图/快照；
  （3.2 ）“insert into”+空格，列出当前用户的所有表名/视图/快照；
  （3.3 ）“delete”+空格，列出当前用户的所有表名/视图/快照；
  （3.4 ）“select ... from”+空格，列出当前用户的所有表名/视图/快照；
  （3.5 ）“delete from”+空格，列出当前用户的所有表名/视图/快照；
  （3.6 ）“create”+空格，列出所有的对象类型，如 “TABLE”，“VIEW”等；
  （3.7 ）“create or replace”+空格，列出对象类型 “PROCEDURE”，“FUNCTION”，“VIEW”等；
  （3.8 ）“alter”+空格，列出所有的对象类型，如 “TABLE”，“VIEW”等；
  （3.9 ）“drop”+空格，列出所有的对象类型，如 “TABLE”，“VIEW”等；
  （3.10）“truncate”+空格，列出 “CLUSTER” 及 “TABLE”；
  （3.11）“lock”+空格，列出 “TABLE”；
  （3.12）“truncate”+空格，列出 “CLUSTER”、“INDEX” 及 “TABLE”；
  （3.13）“comment on”+空格，列出 “SNAPSHOT”、“TABLE”、“VIEW”；
  （3.14）“create synonym ... for”+空格，列出当前用户的所有对象名；
  （3.15）“create public synonym ... for”+空格，列出当前用户的所有对象名；
  （3.16）“grant”+空格，列出所有的系统权限和对象权限；
  （3.17）“revoke”+空格，列出所有的系统权限和对象权限；
  （3.18）“grant ... to”+空格，列出所有的用户名/角色；
  （3.19）“revoke ... from”+空格，列出所有的用户名/角色；
  （3.20）“grant ... to ...”+逗号，列出所有的用户名/角色；
  （3.21）“revoke ... from ...”+逗号，列出所有的用户名/角色；
  （3.22）“revoke ...”+逗号，列出所有的系统权限和对象权限；
  （3.23）“grant ...”+逗号，列出所有的系统权限和对象权限；
  （3.24）“revoke ...”+逗号，列出所有的系统权限和对象权限；
  （3.25）“grant ... on”+空格，列出当前用户的所有对象名；
  （3.26）“revoke ... on”+空格，列出当前用户的所有对象名；
  （3.27）“desc”+空格，列出当前用户的对象名；
  （3.28）“describe”+空格，列出当前用户的对象名；
  （3.29）“schema”+空格，列出当前用户的对象名；
  （3.30）“create ... index ... on”+空格，列出当前用户的所有表名/簇名；
  （3.31）“create ... trigger ... on”+空格，列出当前用户的所有表名；
  （3.32）“temporary table”+空格，列出当前用户的所有临时表；
  （3.33）“table”+空格，列出当前用户的所有表名；
  （3.34）“view”+空格，列出当前用户的所有视图名；
  （3.35）“public synonym”+空格，列出所有的公共同义词；
  （3.36）“synonym”+空格，列出所有的公共同义词或当前用户的所有同义词；
  （3.37）“unique index”+空格，列出当前用户的所有唯一索引；
  （3.38）“bitmap index”+空格，列出当前用户的所有位图索引；
  （3.39）“index”+空格，列出当前用户的所有索引；
  （3.40）“indextype”+空格，列出当前用户的所有索引类；
  （3.41）“constraint”+空格，列出当前用户的所有约束名；
  （3.42）“table ... constraint”+空格，列出指定表的所有约束名；
  （3.43）“procedure”+空格，列出当前用户的所有过程名；
  （3.44）“function”+空格，列出当前用户的所有函数名；
  （3.45）“package”+空格，列出当前用户的所有包；
  （3.46）“package body”+空格，列出当前用户的所有包体；
  （3.47）“trigger”+空格，列出当前用户的所有触发器；
  （3.48）“sequence”+空格，列出当前用户的所有序列号；
  （3.49）“snapshot”+空格，列出当前用户的所有快照；
  （3.50）“segment”+空格，列出当前用户的所有段；
  （3.51）“object”+空格，列出当前用户的所有对象；
  （3.52）“database link”+空格，列出当前用户的所有数据库链；
  （3.53）“library”+空格，列出当前用户的所有库名；
  （3.54）“dimension”+空格，列出当前用户的所有 dimension；
  （3.55）“operator”+空格，列出当前用户的所有 operator；
  （3.56）“resource cost”+空格，列出所有的系统资源；
  （3.57）“cluster”+空格，列出当前用户的所有簇名；
  （3.58）“role”+空格，列出当前用户的所有角色；
  （3.59）“user”+空格，列出所有的用户名；
  （3.60）“profile”+空格，列出所有 profile；
  （3.61）“type”+空格，列出当前用户的所有类型；
  （3.62）“type body”+空格，列出当前用户的所有类型体；
  （3.63）“temporary tablespace”+空格，列出当前用户的所有临时表空间；
  （3.64）“tablespace”+空格，列出当前用户的所有表空间；
  （3.65）“datafile”+空格，列出所有的数据文件；
  （3.66）“controlfile”+空格，列出所有的控制文件；
  （3.67）“logfile”+空格，列出所有的 log 文件；
  （3.68）“database”+空格，列出所有的数据库名；
  （3.69）“alter session set”+空格，列出所有的会话参数；
  （3.70）“set transaction”+空格，列出 “READ ONLY”、“READ WRITE” 等；
  （3.71）“set”+空格，列出 “autocommit”、“echo”、“timing” 及 “transaction”；
  （3.72）“show”+空格，列出 “autocommit”、“echo” 及 “timing”
  提示：当SQL编辑器的鼠标为漏斗状时，若此时按 Esc 键或改变光标的位置，则停止搜索，不再弹出提示窗口。
  当提示窗口出现时，在输入的同时，提示窗口能自动查找。如果“S*”被选中，则自动查找子串开头的全串，比如，输入子串“name”，窗口搜索 “NAME1” ,“NAME2” 等；如果“*S*”被选中，则自动查找包含子串的全串，比如，输入子串“name”，窗口搜索 “FIRST_NAME”，“NAME1” ,“NAME2” 等。
  按Ctrl+PdDn键或按钮则向下查找， 按Ctrl+PdUp键或按钮则向上查找。
  提示窗口还支持以下的键盘/鼠标操作： 上下箭头键 - 上下移动高亮度显示条； Home 键 - 高亮度显示第一个选项； End 键 - 高亮度显示第后一个选项； PgUp/PgDn； Enter 键（或鼠标双击一选项） - 选中一选项并关闭提示窗口； Esc 键或按钮 - 关闭提示窗口； 鼠标点击窗口上方的灰色边框 - 列排序。
  本工具采用语句块的方式对SQL编辑器进行操作。语句块是这样定义的：如果SQL编辑器有文本被选中，则语句块为选中的所有文本（蓝色背景的区域）；否则（未选中文本），语句块为光标所在处不含空白行的连续文本（即语句块与语句块之间用空白行分隔）。SQL编辑器左边有一语句块标识，通过语句块标识可以得知当前语句块的起始行号和结束行号。
  一个语句块可以是一条SQL语句，也可以包含多条SQL语句。
  如果行的末尾字符为分号 “;” 或语句的下一行为空白行或 “/”，则为一条语句的结束标记；
  如果行为语句 “desc [user.]objectName[@dbLink]” 或 “describe [user.]objectName[@dbLink]” 或 “schema [user.]objectName[@dbLink]” 或 “roll” 或 “rollback” 或 “commit”，或 行以“@”或“@@”或“run ”开头，则这一行被视为一条单独的语句（不需要结束标记）
  对SQL编辑器的操作，可以通过其弹出菜单（鼠标右健点击之），或主菜单 “Edit（编辑）”，或工具条的图标按钮。见下文的 “菜单/工具条按钮”

- 菜单/工具条按钮
  # Execute Single Statement（执行单条语句）
  执行SQL编辑器中的单条语句（快捷键为 Ctrl+Enter 或 F8）
  如果是 SELECT 语句，运行结果显示于工作表中，结果信息显示于信息栏；
  如果是语句 “desc [user.]objectName[@dbLink]”，则弹出窗口显示对象信息；
  如果是语句 “schema [user.]objectName[@dbLink]”、“explain plan for SQL” 或 “@filename”，运行结果及结果信息都显示于监控器中；
  其它语句的结果信息显示于信息栏。
  # Execute Statement(s) by Monitor（监控执行单/多条语句）
  快捷键为 Ctrl+M 或 F9
  用监控器监控SQL编辑器中当前语句块中的单条或多条语句的运行，运行结果及结果信息显示于监控器。
  （注：如果语句块包含多条语句，则必须使用该菜单项或按钮，不能使用 “Execute Single Statement”；如果语句块是一条 PL/SQL 语句，则不能使用该菜单项或按钮，必须使用“Execute Single Statement”）
  # Commit（提交）
  当 Autocommit 的状态为 OFF，且SQL编辑器运行了 insert、delete、update 等语句后，则该菜单项或按钮可用（点击之则相当于执行语句“commit”）。
  # Rollback（回滚）
  当 Autocommit 的状态为 OFF，且SQL编辑器运行了 insert、delete、update 等语句后，则该菜单项或按钮可用（点击之则相当于执行语句“rollback”）。
  # Explain Plan（解释计划）
  将SQL编辑器中的单条SQL语句的解释计划显示于监控器，通过解释计划可以清晰地看出SQL语句的索引使用、全表扫描等情况，进而判断SQL语句的性能。
  # Export（导出）
  快捷键为 Ctrl+O
  如果SQL编辑器选定的是一条 SELECT 语句，则该菜单项或按钮可用。将 SELECT 语句执行的结果不显示在工作表，而是直接导出为 XLS/CSV/INSERT Statement/HTML/XML 这5种格式到一外部文件，用来备份/移植/打印/存档等（如果选定的是XLS格式，或许只能导出5000条或10000条记录，这是因为受内存限制的缘故。如果用户的确需要导出很多的XLS记录，用户可以先导出多个较小的XLS文件再合并为一个大的XLS文件，或先导出为CSV格式的文件再用XLS打开CSV文件（除XLS格式外，其它4种格式的导出不受内存的限制，只受硬盘空间的限制；如果选定的是CSV格式，默认的分隔符为逗号，如果数据中本身包含了分隔符或回车符，则列值用双引号引起来，基于CSV规则））。
  # Config（配置）
  打开 “配置” 窗口，配置数据库的连接及工具序列号（即 serial_no）。
  # Oracle Connect（Oracle 连接）
  打开 “Oracle 连接” 窗口，创建一新的数据库连接/会话
  # set autocommit on/off
  用来切换 Autocommit 的状态（相当于运行命令 “set autocommit on” 或 “set autocommit off”）。
  （当 Autocommit 的状态为 ON 时，能自动提交 insert、delete、update 等语句的操作）
  # set timing on/off
  用来切换 Timing 的状态（相当于运行命令 “set timing on” 或 “set timing off”）。
  （当 Timing 的状态为 ON 时，在信息栏或监控器中显示每条SQL语句的开始时间及消耗的时间）
  # set echo on/off
  用来切换 Echo 的状态（相当于运行命令 “set echo on” 或 “set echo off”）。
  （当 Echo 的状态为 OFF 时，在监控器中只显示SQL语句的结果信息而不显示对应的SQL语句）
  # Disconnect（断开连接）
  打开 “断开连接” 窗口，断开所选会话的数据库连接，以释放数据库资源。
  （鼠标点击列表框中任一选项，按 Ctrl+A 键则选中所有选项；按住 Ctrl 键的同时，鼠标点击一选项，则选中/去选该选项；连接断开后，下次可以直接运行SQL语句，不必通过 “Oracle 连接” 窗口重新连接，因为本工具能自动重新连接）
  # Load Scripts（装入脚本语句）
  将外部文件中的文本装入到SQL编辑器（快捷键为 Ctrl+L）。
  # Save All Scripts（保存所有的脚本语句）
  将SQL编辑器中的所有文本保存到外部文件（快捷键为 Ctrl+S）。
  # Cut（剪切）
  将SQL编辑器的选中文本剪切到剪贴板（快捷键为 Ctrl+X）。
  # Copy（拷贝）
  将SQL编辑器的选中文本拷贝到剪贴板（快捷键为 Ctrl+C）。
  # Paste（粘贴）
  将剪贴板的文本拷到SQL编辑器（快捷键为 Ctrl+V）。
  # Find & Replace（查找和替换）
  打开 “查找和替换” 窗口，查找/替换SQL编辑器中相匹配的字符串（快捷键为 Ctrl+F；快捷键 F3 用来查找下一个）。
  # Undo（撤销）
  撤销SQL编辑器的编辑操作（快捷键为 Ctrl+Z）
  # Redo（重做）
  重做（或恢复）SQL编辑器的编辑操作（快捷键为 Ctrl+Shift+Z）
  # Format SQL（SQL格式美化）
  重新编排SQL编辑器中当前语句块，采用缩进式的格式，达到美化、整齐、易读之目的。
  # Add Comments（加上注释）
  给SQL编辑器中当前语句块加上注释标记（即语句块中每行的开头加上注释标记 “--”）
  # Remove Comments（去掉注释）
  去掉SQL编辑器中当前语句块中的所有注释标记（/* */ 及 --）
  # Remove Quotation Marks（去掉引号）
  Java 程序或其它程序语言中的多行SQL语句通常使用双引号“"”和加号“+”进行联接（例如 "select ..." + "where ..."），
  用户要调试/运行这个SQL，需要手工地删除所有额外的双引号和加号，或采用其它的文本编辑器替换所有的双引号和加号。但有的加号是作为运算符或外连结符因而不能删除， 所以删除这些双引号和加号既费时费心又容易出错。为了方便用户，本工具特地增加了这一菜单项和按钮，通过它可以很方便、快速地删除所有额外的双引号和加号。
  （例如，字串 "a\"b"+"c(+)"，会变为 a\"b c(+) ）
  # Add Quotation Marks（加上引号）
  将SQL编辑器中当前语句块的每行首尾加上双引号“"”，行与行之间用加号“+”连结，用来将调试好了的SQL语句放入 Java 程序或其它语言的程序，方便程序的编写。
  # Increase Indent（增加缩进）
  将SQL编辑器中当前语句块向右移动一个 Tab 位置，即 4 个空格（快捷键为 Tab）。
  （Ctrl+右箭头键，则将语句块向右移动一个空格的位置）
  # Decrease Indent（减少缩进）
  将SQL编辑器中当前语句块向左移动一个 Tab 位置，即 4 个空格（快捷键为 Shift+Tab）。
  （Ctrl+左箭头键，则将语句块向左移动一个空格的位置）
  # Column Block Operation（列块操作）
  打开 “列块操作” 窗口，对SQL编辑器中当前语句块进行列块操作。
  （通过鼠标的任意拖动或双击选择一列块，对列块进行拷贝、剪切、删除、左右移动等操作）
  # To Upper Case（转为大写）
  将SQL编辑器中选中的文本转换为大写字母。
  # To Lower Case（转为小写）
  将SQL编辑器中选中的文本转换为小写字母。
  # Help Topics（帮助主题）
  打开 “帮助主题” 窗口（快捷键为 F1）。
  （如果是中文界面，则调入工作目录中的帮助文件 “Help-in-Chinese.html”；如果是英文界面，则调入工作目录中的帮助文件 “Help-in-English.html”）
  # About Oracle SQL Handler（关于 Oracle SQL Handler）
  打开 “关于 Oracle SQL Handler” 窗口，显示 本工具作者的 E-mail 地址及QQ号、工具版本号、操作系统的类型、JRE 版本号、当前会话连接的 Oracle 数据库的版本号、软件的版权声明及留言页面等信息。
  （蓝色文字（即 工具作者的 E-mail 地址及 QQ 号），可以通过其右边的图标按钮进行拷贝）

- 工作表（Worksheet）
  如果SQL编辑器中执行的是一条 SELECT 语句，则 SELECT 语句的结果显示在工作表（为了避免显示太多记录对内存及性能的影响，所以在工作表的工具条上有一“限定查询记录”输入框，默认限定2000行。如果超出2000行，每读5000条检查内存使用情况，如果剩下内存不多则不再继续读！所以通常最多只能显示1－2万行。作者认为没必要显示太多记录，显示得太多，用户不可能每一条去查看/编辑。这就要求用户不要将“限定查询记录”输入框的值设置得太大，或在写SELECT语句时尽量加上过滤条件显示所需要的数据。如果用户的确想查看或保存太多的记录，可以借助上面的“导出”功能）
  对工作表的操作可以通过图标按钮，或主菜单“Worksheet/工作表” 或弹出菜单（鼠标右击之）。各项功能及使用介绍如下：
  # Insert A Blank Row（插入一空行）
  快捷键为 Ctrl+I
  如果有单元格被选中，则在第一个选中单元格的前面插入一空白行，否则在工作表的末尾追加一空白行（注：只是在工作表中插入一空白行，而不是插入一空白行到数据库表中）。
  # Duplicate A Row（复制一行）
  快捷键为 Ctrl+U
  如果要插入一行，且这一行与已存在的一行的内容大部分是相同的，如果使用“插入一空行”，则要输入的内容太多，这时应使用“复制”，也就是，先选中某一行的全部或部分单元格，再按“复制一行”这个菜单项，则复制了一行，再作一些修改，这样就很快地插入了一行。
  # Delete Selected Row(s)（删除选定的行）
  快捷键为 Ctrl+D
  如果有单元格被选中，则从工作表中删除选中单元格所在的行（注：只是在工作表中删除选定的行，而不是删除数据库表中的记录）。
  # Commit Changes（提交更改）
  快捷键为 Ctrl+S
  如果按钮图标为红色或菜单项可见，则可以通过修改工作表中的数据去更新数据库的表（即 工具条最右边显示的表名或视图名）。
  如果该菜单项可见并且为黑色字体，则表示工作表的数据发生了改变（修改、插入行、删除行），可以将所有的改动提交/写入到数据库的表中（提交过程中如果某一行发生错误，则高亮度显示错误行并且消息栏给出简短的错误信息。如此反复地更正，直至提交成功为止。提交成功后，该菜单项将变成灰色）。
  # Find & Replace（查找和替换）
  快捷键为 Ctrl+F
  弹出 “查找和替换” 窗口，对工作表进行查找或替换（当工作表中的数据量很大时，此功能显得特别有用）。
  数据类型分为 “数字型的单元格” 及 “非数字型的单元格”（数字型的单元格，是指单元格的标题显示其数据类型为 NUMBER、FLOAT 或 INTEGER）；
  搜索范围分为 “所有单元格”、“选中的单元格” 及 “未选中的单元格”；
  搜索方向分为 “按行搜索” 及 “按列搜索”。
  # Single Record Operations（单条记录操作）
  快捷键为 Ctrl+R
  当工作表有很多列导致行很长时，有时对数据的查看和编辑显得不太方便，因此本工具提供了 “单条记录操作” 窗口，用竖向表格显示一条记录（即 第一列显示列名，第二列显示数据）（鼠标右击竖向表格则显示弹出菜单）。
  # Copy Cell(s) With Title（拷贝单元格带标题）
  快捷键为 Ctrl+W
  拷贝选中的单元格及标题（列与列之间用空格补齐）
  # Copy Separated Cells（拷贝分隔的单元格）
  拷贝选中的单元格，列与列之间用选定的分隔符隔开。
  如果将拷贝的结果保存为扩展名为 CSV 的文件，则文件能被 Microsoft Excel 打开；
  如果分隔符为Tab键，则拷贝的结果能直接粘贴到打开的 Excel 文件。
  （如果使用快捷键 Ctrl+C，则分隔符为 Tab 键）
  # Copy Separated Title（拷贝分隔的标题）
  拷贝选中单元格的标题，标题与标题之间用选定的分隔符隔开。
  （注：若未选中单元格，则拷贝工作表的所有标题；该菜单项通常和菜单项 “拷贝分隔的单元格” 配合使用）
  # Export Selected Cells（导出选定单元格）
  快捷键为 Ctrl+O
  将工作表中选定的单元格导出为 XLS/CSV/INSERT Statement/HTML/XML 这5种格式到一外部文件，用来备份/移植/打印/存档等（请参照上面的直接“导出”）
  # Refresh（刷新）
  刷新表格的数据（重新运行之前的 SELECT 语句）
  # Number Statistic（数值统计）
  对选中区域中的数字型单元格进行数值统计，包括计数、最大值、最小值、求和、平均值
  # Empty Cell(s)（清空单元格）
  快捷键为 Ctrl+E
  清空工作表中选中的单元格
  # Select All（全选）
  快捷键为 Ctrl+A
  选中工作表中的所有单元格
  # Select Whole Row（选择整行）
  快捷键为 Ctrl+L
  如果某行有部分单元格被选择，则通过此菜单项选择整行
  工作表还具备以下功能/操作：
  （1）鼠标指向列标题，提示该列的数据类型、格式及长度；
  （2）鼠标左键点击列标题，对该列进行升/降排序；
  （3）鼠标左键点击行号列或按住左键拖动鼠标，则选择整行（支持Ctrl键或Shift键的配合使用，同Excel表格操作一样）；
  （4）鼠标右键点击列标题，拷贝单个列标题；
  （5）Ctrl+鼠标左键点击列标题，则选中或去选整列单元格（同Excel不一样，Excel鼠标点击列标题则选择整列，本工具鼠标点击列标题则对列进行排序）；
  （6）鼠标拖动列标题，改变该列在表格中的位置；
  （7）选中工作表格中的一行并按 “Alt+上下箭头键”，上下移动选中的行；
  （8）“限定查询记录”输入框只接收值1至999999，支持上下箭头键及Page Up/Down 键，将输入框的值以100进行递增或递减，以此来快速地调整输入框的值；
  （9）鼠标指向列标题之间的分隔线，鼠标变为水平方向的双向箭头，按住鼠标左键左右拖动则改变列的宽度；双击鼠标左键则将列调到合适的宽度以显示该列的所有单元格；如果某一行全选或表格全选，鼠标双击任一标题分隔线，则将表格的所有列调到合适宽度，这个同Excel表格操作一样；
  （10）如果单元格的数据类型为 NUMBER、VARCHAR2、DATE、TIMESTAMP 等（单元格背景颜色为白色），鼠标双击则可直接编辑；
  如果数据类型为大型的文本字段如 CLOB、LONG（单元格背景颜色为淡黄色），鼠标双击则弹出一窗口则可查看/编辑多行文本；
  如果数据类型为 BLOB、LONG RAW 等（单元格背景颜色为灰色），不可编辑。
  为了能通过修改工作表中的数据去更新数据库中的表（即 “提交更改”菜单项可见，工作表边框的左上角能显示一表名），则要求工作表中至少有一个可编辑列的列名存在于查询表。请参照以下样本：
  （1）语句 “select * from tableName ...” - 合要求；
  （2）语句 “select col_1, col_2 from tableName ...” - 合要求；
  （3）语句 “select a.col_1, trunc（a.col_2） from tableName a ...” - 合要求；
  （4）语句 “select upper(col_1)，sysdate from tableName ...” - 不合要求，因为没有一个列名存在于查询表

- 监控器（Monitor）
  又叫控制台，用来监控批量SQL语句的运行。
  # 选项框 “遇到异常要暂停”
  当该选项框选中时，如果批中某一SQL语句运行出错，则暂停在这条出错误的语句，此时要么更正这条语句重新运行之，要么忽略错误继续运行下一条语句；
  否则（该选项框未选中），就算有SQL语句出错，也不暂停，继续运行下一条语句，直到批中最后一条语句运行完毕。
  # 选项框 “输出 Log”
  当该选项框未选中时，不输出任何 Log（通常用来避免大量 Log 的输出对内存的消耗）
  鼠标右击 Log 区的文本框，则显示弹出菜单；
  Ctrl键+鼠标点击 Log 区或 Amend 区中的字串 “[user.]objectName[@dbLink]” ，则弹出窗口显示字串的对象信息。

- 数据字典
  本工具提供的常用数据字典有：表、视图、索引、同义词、约束、过程、触发器、对象。
  （位于监控器的右方）
  通过在文本框中输入字串进行搜索（如果文本框为空，则搜索所有对象）。
  文本框支持通配符 “%” 及 “*”，例如，输入 “%NAME” 或 “NAME%” 或 “%NAME%”，则查找包含子串 “NAME” 的所有对象。搜索的结果显示于文本框下方的表格，通过表格的弹出菜单可以对每一个选中的对象进行操作（如 修改、删除、查看等）。
  （数据字典的表格操作同工作表的操作是一样的，它们的弹出菜单的功能/操作也很类似）

- 信息栏/进度条/状态栏
  信息栏用来显示单条语句运行的结果信息（多条语句运行的结果信息显示于监控器的 Log 区），鼠标右击信息栏则拷贝信息栏中的所有文本。
  消息栏支持3种字体颜色：如果是一条错误（或异常）信息，则字体为红色；如果运行正常（无错误产生），则字体为黑色；如果SELECT语句的实际记录数超过了“限定查询记录”输入框的值，则字体为蓝色；
  如果信息太多太长导致信息栏不能显示所有文字，或者信息字串中含有换行符，那么鼠标指向信息栏时工具提示“鼠标双击信息栏则弹出信息窗口”。
  当SQL语句在运行时，进度条则显示，如果鼠标指向进度条，则提示一些信息：如 当前运行的SQL语句的开始时间、当前运行的SQL语句是批中的第几条语句、已导出多少条记录等。
  当SQL语句在运行时，“Stop” 按钮则显示（显示在进度条的右边）。如果当前SQL语句运行时间太长，或其它原因需要中断其运行，则只需要点击 “Stop” 按钮，通常只需几秒钟就能停止其运行。存在个别情况，即 点击了 “Stop” 按钮长时间还不能停止，如果过了两分钟还不能停止，“Stop” 按钮的背景色变为淡黄色，此时若再点击它一次则强制中断。
  状态栏分割成 4 个小区间：
  第一个区间指示SQL编辑器的光标所处的行列位置（右边有一个倒立的小三角形的图标按钮，通过它可以改变光标的行号）；
  第二个区间显示 Autocommit 的状态（命令 “set autocommit on” 或 “set autocommit off” 可以改变 Autocommit 的状态）；
  第三个区间显示 Timing 的状态（命令 “set timing on” 或 “set timing off” 可以改变 Timing 的状态）；
  第四个区间显示 Echo 的状态（命令 “set echo on” 或 “set echo off” 可以改变 Echo 的状态）

补充说明

[1] 本工具的所有文本编辑框不仅支持通用的键盘操作（如 Ctrl+A、Home、End、Ctrl+Home、Ctrl+End、PgUp、PgDn），还隐含了本工具独有的键盘操作，如下：

（1）Ctrl+D 在SQL编辑器或表格中删除行；
（2）Ctrl+I 在SQL编辑器或表格中插入空白行；
（3）Ctrl+Backspace 向后删除一字串；
（4）若多行被选中：Tab 键将块右移 1 个空格的位置；Ctrl+Right 将块右移 1 个空格的位置；Shift+Tab 将块左移 4 个空格的位置；Ctrl+Left 将块左移 1 个空格的位置
（5）若未选中行或仅一行被选中：Ctrl+Left 光标后退一字串；Ctrl+Right 光标前进一字串

[2] 本工具的下列控件支持弹出菜单操作：
SQL编辑器、工作表、监控器的 Log区、数据字典表格、“desc objectName”窗口中的表格、工具条下方的会话标签栏。
通过弹出菜单或工具条按钮的提示文字可以得知其快捷键。

[3] 用户可以改变工具的背景图片，将喜欢的图片文件改名为 background-picture.gif 或 background-picture.PNG，并放到工作目录下（文件 OracleSQLHandler.jar 所在的目录），重启工具，则该图片作为主界面的背景图片。 (注：图片文件的后缀只能是 GIF 或 PNG, 象 JPG, BMP 需要改后缀, 还有,图片尺寸不能小于 100x100, 否则使用系统自带的背景图片)

[4] 如果用户想通过命令“EXEC a_procedure()”来运行或调试一PL/SQL过程, 则用户需要在SQL编辑器编写并运行如下语句:
begin
a_procedure();
end;

[5] 本工具提供的 Oracle JDBC 版本号为 10.2.0.3

[6] 本工具连接到数据库后有如下默认设置：

NLS_DATE_FORMAT 的默认格式为 “yyyy-mm-dd hh24:mi:ss”，这样 to_char(sysdate) 就等价于 to_char(sysdate, 'yyyy-mm-dd hh24:mi:ss')，to_date('2004-08-08 18:18:18') 就等价于 to_date('2004-08-08 18:18:18', 'yyyy-mm-dd hh24:mi:ss')。可以通过语句 “alter session set nls_date_format” 改变其格式

欢迎您使用本工具！本工具的作者衷心感谢您的宝贵意见和建议，并欢迎留言到如下网页：
http://mao.swan.blog.163.com/
http://www.onlinedown.net/soft/91179.htm
http://www.onlinedown.net/soft/455916.htm
http://www.duote.com/soft/17069.html
http://www.itpub.net/thread-1470248-1-1.html

版权属 毛灵燕(Swan Mao) 所有，欢迎使用!
E-mail: mao.swan@163.com QQ: 1078195462