成功与自信
来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/archive.php?id=9062 存档链接: https://web.archive.org/web/20050106193720id_/http://www.blogbus.com:80/blogbus/blog/archive.php?id=9062
成功与自信 2004/09/02 到 2004/9/30 成功源于自信。 java j2ee ejb Delphi XP WorkFlow 学习使用Commons 之 BeanUtils(1)
2004-09-29 01:11 jakarta的Commons被许多项目所引用,里面有许多很实用的工具类,如果不熟悉他们,怎么能够会更灵活的使用spring ,struts呢? 开始学习其中的部分组件。 BeanUtils组件 动态的创建和存取javaBean。通过该组件可以动态的创建 javabean,和javabean里面的getter、setter方法。 一个简单的例子: package com.commonstest.beanutils; import org.apache.commons.beanutils.BasicDynaClass; import org.apache.commons.beanutils.DynaProperty; import org.apache.commons.beanutils.DynaBean; import org.apache.commons.beanutils.PropertyUtils; /** * *
- TODO To change the template for this generated type comment go to
- Window - Preferences - Java - Code Style - Code Templates */ public class DynaBeanUsage { public static void main(String[] args) throws Exception { //定义动态类的属性== define properties for dynamic class DynaProperty[] props = new DynaProperty[]{new DynaProperty("aField",java.lang.String.class)}; //动态创建一个 AnotherBean 类 里面包括一个aField 属性 BasicDynaClass dynaclass = new BasicDynaClass("AnotherBean",null,props); DynaBean dBean = dynaclass.newInstance(); //设置 AnotherBean 类的 aField属性值为11111 PropertyUtils.setProperty(dBean,"aField","11111"); System.out.println("value:"+PropertyUtils.getProperty(dBean,"aField")); } } Post by EugeneCao @ 01:11 Open Source Software Models
2004-09-28 09:09 增加了 Open Source Software Models 的链接 使用UML的方式显示 API DOC 确实很直观方便. Post by EugeneCao @ 09:09 读马大叔的《持续集成》
2004-09-21 23:52 这片文章(中午)出自2002年,一起一直没有看到,今天偶然的机会发现的,仔细阅读学习一下。 一下是我做的一些摘抄和心得,大家可读原文: “持续集成( Continuous Integration )”这个术语来自于 XP (极限编程)的一个实践。 实现自动化日创建需要做以下几部分的工作: 将所有的源代码保存在单一的地点,让所有人都能从这里获取最新的源代码(以及以前的版本)。 使创建过程完全自动化,让任何人都可以只输入一条命令就完成系统的创建。 使测试完全自动化,让任何人都可以只输入一条命令就运行一套完整的系统测试。 确保所有人都可以得到最新、最好的可执行文件。 持续集成的优点: 有问题可以在集成的时候立即发现。 集成越频繁,效果越好: 持续集成至少是日创建日集成。不积压问题。 一次成功的创建 所有最新的源代码都被配置管理系统验证合格 所有文件都通过重新编译 得到的目标文件(在我们这里就是 Java 的 class 文件)都通过连接,得到可执行文件 系统开始运行,针对系统的测试套件(在我们这里大概有 150 个测试类)开始运行 如果所有的步骤都没有错误、没有人为干涉,所有的测试也都通过了,我们就得到了一个成功的创建 单一代码源: 尽量确保所有的东西都保存在配置管理系统的同一棵代码源树中。以后针对组件的版本要加强了。 自测试的代码: 《持续集成》 译文 by gigix 《 Continuous Integration 》 原文 by Martin Fowler & Matthew Foemmel Post by EugeneCao @ 23:52 还要继续努力
2004-09-20 17:20 看到 YY 这么努力,真是惭愧,我看书的效率一直很低,书多,事情也多 ,一直也收不下心来,到家就不知道干什么了,感觉要干的,要学的太多了........ 老婆也很辛苦,到家就做饭洗衣服,忙到晚上还要看书,然后看着看着就困了. 唉,都很累啊. 觉得还是要坚持写自己的blog,这样可以促进自己的学习. 最近一直在看spring,重要的在于实践,从简单坐起!!! Post by EugeneCao @ 17:20 基于web上的桌面环境
2004-09-13 16:23 今天在 黄冬的blog 上遛遛,看到了 X-Desktop ,一个基于web的桌面环境,太酷了. 支持多种skins KDE theme Gnome AEON OSX Aqua Windows XP SAP Windows 2000 OSX Server Gnome Redhat Custom skins 支持多种浏览器: Mozilla 1.2 + Phoenix/Firebird 0.5+ K-Meleon 0.7+ Netscape 7.0+ Avant 7.0+ Microsoft IE6.0+ Galeon 1.2+ OSX: Camino 0.7+ 可以去这里看看 http://www.x-desktop.org/ Post by EugeneCao @ 16:23 让Adobe Reader启动更快
2004-09-11 15:00 安装了 Adobe Reader6后 发现每次运行都是很慢,后来找到个软件,可以在启动的时候不加载一些不必要的组件. Adobe Reader SpeedUp V1.28.0.142 设置很简单,也很实用. 如果安装了金山词霸组件,比忘记了选择上. Post by EugeneCao @ 15:00 JDBC3.0的新特性.
2004-09-12 08:36 JDBC 3.0 有什么新特性 出自:ibm.com/developerworks JoshHeidebrecht 2002年08月15日 21:55 介绍 Java 数据库连接(JDBC)3.0 规范建立在其原本稳固的基础上,增加了几个新功能以弥补原来功能不足的地方。无论是 java.sql 还是第一次出现的 javax.sql 软件包,都会包含在还处于测试阶段的 Java 1.4 版平台中。在今年晚些时候它就会被正式发布,到时 Java 开发人员就能够利用这些改进了,所以现在正是开始了解这些改变的好时候。 我们会简单地讨论一下 JDBC 的设计师们为这个版本所考虑到的几个设计目标。理解了设计师们的设计基本原理,我们就可以更好地去理解那些改变。我们会总结一下规范中的几个新功能以便了解整个 API 是怎样被改变的。另外,我们还会深入研究几个最适用于应用程序开发人员的关键功能,以成功地协助您利用其新性能。 设计目标 设计 JDBC 3.0 规范的初衷主要是让原先的 JDBC 规范下的功能更加完美。因此,这个新规范的设计指导原则之一就是要与现存的应用程序和驱动程序保持兼容性。所以,JDBC 2 的用户可以放心,他们的应用程序能在 JDBC 3.0 下正确运行。另外,使用以前那些遭反对的方法写进 JDBC 1 API 的代码也可以继续运行。 随着 J2EE 平台迅速的日益流行,设计师们也想增强 JDBC 的可伸缩性。新增的语句池和增强的连接池支持离实现这个目标还很远。此外,设计师们还仔细地考虑 JDBC 与新的连接器体系结构之间的关系,来继续提高服务器上的 Java 技术。 在 JDBC 2 开发的过程中,SQL99 还处在一种变化不定的情况下。现在规范已经完成了,而且数据库厂商已经采用了部分标准。所以自然地,JDBC 规范就跟着将自己与 SQL99 功能的一部分相统一。最新的 JDBC 规范已经采用了 SQL99 标准中那些已经被广泛支持的功能,还有那些在五年内可能会获得支持的功能。 如果一个数据库还不支持 JDBC 3.0 所支持的部分 SQL99 功能,驱动程序可以使用元数据 API 向应用程序开发人员表明:其底层数据库不支持一部分 JDBC 功能。这一点允许数据库厂商生产出相应的 JDBC 驱动程序,尽管他们可能不支持所有的功能。增加的两种新的数据类型以及对事务的 Savepoint 的支持说明了两个和 SQL99 有关的改变。 新功能摘要 元数据 API 元数据 API 已经得到更新,DatabaseMetaData 接口现在可以检索 SQL 类型的层次结构,一种新的 ParameterMetaData 接口可以描述 PreparedStatement 对象中参数的类型和属性。 CallableStatements 中已命名的参数 在 JDBC 3.0 之前,设置一个存储过程中的一个参数要指定它的索引值,而不是它的名称。 CallableStatement 接口已经被更新了,现在您可以用名称来指定参数。 数据类型的改变 JDBC 所支持的数据类型作了几个改变,其中之一是增加了两种新的数据类型。 为了便于修改 CLOB(Character Large OBject,字符型巨对象)、BLOB(Binary Large OBject,二进制巨对象)和 REF(SQL 结构)类型的值,同名的数据类型接口都被更新了。接下来的是,因为我们现在能够更新这些数据类型的值,所以 ResultSet 接口也被修改了,以支持对这些数据类型的列的更新,也包括对 ARRAY 类型的更新。 增加的两种新的数据类型是 java.sql.Types.DATALINK 和 java.sql.Types.BOOLEAN。新增的数据类型指的是同名的 SQL 类型。DATALINK 提供对外部资源的访问或 URL,而 BOOLEAN 类型在逻辑上和 BIT 类型是等同的,只是增加了在语义上的含义。DATALINK 列值是通过使用新的 getURL() 方法从 ResultSet 的一个实例中检索到的,而 BOOLEAN 类型是通过使用 getBoolean() 来检索的。 检索自动产生的关键字 为了解决对获取自动产生的或自动增加的关键字的值的需求,JDBC 3.0 API 现在将获取这种值变得很轻松。要确定任何所产生的关键字的值,只要简单地在语句的 execute() 方法中指定一个可选的标记,表示您有兴趣获取产生的值。您感兴趣的程度可以是 Statement.RETURN_GENERATED_KEYS,也可以是 Statement.NO_GENERATED_KEYS。在执行这条语句后,所产生的关键字的值就会通过从 Statement 的实例方法 getGeneratedKeys() 来检索 ResultSet 而获得。ResultSet 包含了每个所产生的关键字的列。清单 1 中的示例创建一个新的作者并返回对应的自动产生的关键字。 清单 1. 检索自动产生的关键字 Statement stmt = conn.createStatement(); // Obtain the generated key that results from the query. stmt.executeUpdate("INSERT INTO authors " + '(first_name, last_name) " + "VALUES ('George', 'Orwell')", Statement.RETURN_GENERATED_KEYS); ResultSet rs = stmt.getGeneratedKeys(); if ( rs.next() ) { // Retrieve the auto generated key(s). int key = rs.getInt(); } 连接器关系 大多数应用程序开发人员不需要知道 JDBC 和 J2EE 连结器体系结构之间的关系,就可以很好地使用 JDBC API。但是,由于 JDBC 3.0 规范已经考虑到这项新的体系结构,这使得开发人员能更好地理解 JDBC 在哪里适合 J2EE 标准,以及这个规范的发展方向是什么。 J2EE 连结器体系结构指定了一组协议,允许企业的信息系统以一种可插入的方式连接到应用服务器上。这种体系结构定义了负责与外部系统连接的资源适配器。连接器服务提供者接口(The Connectors Service Provider Interface,SPI)恰好和 JDBC 接口提供的服务紧密配合。 JDBC API 实现了连结器体系结构定义的三个协议中的两个。第一个是将应用程序组件与后端系统相连接的连接管理,它是由 DataSource 和 ConnectionPoolDataSource 接口来实现的。第二个是支持对资源的事务性访问的事务管理,它是由 XADataSource 来处理的。第三个是支持后端系统的安全访问的安全性管理,在这点上,JDBC 规范并没有任何对应点。尽管有最后那个不足,JDBC 接口仍能映射到连接器 SPI 上。如果一个驱动程序厂商将其 JDBC 驱动程序映射到连接器系统协议上,它就可以将其驱动程序部署为资源适配器,并立刻享受可插性、封装和在应用服务器中部署的好处。这样,一个标准的 API 就可以在不同种类的的企业信息系统中,供企业开发人员使用。 ResultSet 可保持性 一个可保持的游标(或结果),就是说该游标在包含它的事务被提交后,也不会自动地关闭。JDBC 3.0 增加了对指定游标可保持性的支持。要制定您 ResultSet 的可保持性,您必须在使用 createStatement()、prepareStatement() 或 prepareCall() 方法准备编写一条语句时就这么做。可保持性可以是下面常量中的一个。 HOLD_CURSORS_OVER_COMMIT ResultSet 对象(游标)没有被关闭;它们在提交操作得到显式的或隐式的执行以后仍保持打开的状态。 CLOSE_CURSORS_AT_COMMIT ResultSet 对象(游标)在提交操作得到显式的或隐式的执行后被关闭。 总的来说,在事务提交之后关闭游标操作会带来更好的性能。除非您在事务结束后还需要该游标,否则您最好在执行提交操作后将其关闭。因为规范没有规定 ResultSet 的缺省的可保持性,所以具体行为还将取决于执行情况。然而,我希望在可以使用 JDBC 3.0 驱动程序时,大多数执行在事务结束后仍旧会关闭游标。 返回多重结果 JDBC 2 规范的一个局限是,在任意时刻,返回多重结果的语句只能打开一个 ResultSet。作为 JDBC 3.0 规范中改变的一个部分,规范将允许 Statement 接口支持多重打开的 ResultSets。然而,重要的是 execute() 方法仍然会关闭任何以前 execute() 调用中打开的 ResultSet。所以,要支持多重打开的结果,Statement 接口就要加上一个重载的 getMoreResults() 方法。新式的方法会做一个整数标记,在 getResultSet() 方法被调用时指定前一次打开的 ResultSet 的行为。接口将按如下所示定义标记: CLOSE_ALL_RESULTS 当调用 getMoreResults() 时,所有以前打开的 ResultSet 对象都将被关闭。 CLOSE_CURRENT_RESULT 当调用 getMoreResults() 时,当前的 ResultSet 对象将被关闭。 KEEP_CURRENT_RESULT 当调用 getMoreResults() 时,当前的 ResultSet 对象将不会被关闭。 清单 2 展示的是一个处理多重打开结果的示例。 清单 2. 如何处理多重打开结果 String procCall; // Set the value of procCall to call a stored procedure. // ... CallableStatement cstmt = connection.prepareCall(procCall); int retval = cstmt.execute(); if (retval == false) { // The statement returned an update count, so handle it. // ... } else { // ResultSet ResultSet rs1 = cstmt.getResultSet(); // ... retval = cstmt.getMoreResults(Statement.KEEP_CURRENT_RESULT); if (retval == true) { ResultSet rs2 = cstmt.getResultSet(); // Both ResultSets are open and ready for use. rs2.next(); rs1.next(); // ... } } 连接池 JDBC 3.0 定义了几个标准的连接池属性。开发人员并不需要直接地用 API 去修改这些属性,而是通过应用服务器或数据存储设备来实现。由于开发人员只会间接地被连接池属性的标准化所影响,所以有利之处并不明显。然而,通过减少厂商特定设置的属性的数量并用标准化的属性来代替它们,开发人员能更容易地在不同厂商的 JDBC 驱动程序之间进行交换。另外,这些属性还允许管理员很好地优化连接池,从而使应用程序的性能特点发挥到极致。这些属性如下表所示。 属性名称 描述 maxStatements 连接池可以保持打开的语句数目。 initialPoolSize 当池初始化时可以建立的物理连接的数目。 minPoolSize 池可以包含的物理连接的最小数目。 maxPoolSize 池可以包含的物理连接的最大数目。零指没有最大值。 maxIdleTime 持续时间,以秒计,指一个闲置的物理连接在被关闭前可以在池中停留的时间。零指没有限制。 propertyCycle 间隔时间,以秒计,指连接池在执行其属性策略前可以等待的时间。 预备语句池 除了改进对连接池的支持以外,现在也能缓冲预备语句了。预备语句允许您用一条常用的 SQL 语句然后预编译它,从而在这条语句被多次执行的情况下大幅度地提升性能。在另一个方面,建立一个 PreparedStatement 对象会带来一定量的系统开销。所以,在理想情况下,这条语句的生命周期应该足够长,以补偿它所带来的系统开销。追求性能的开发人员有时候为了延长 PreparedStatement 对象的生命周期会不惜扭曲他们的对象模型。JDBC 3.0 让开发人员不再为此担心,因为数据源层现在负责为预备语句进行缓存。 清单 3 将示范如何利用 JDBC 对预备语句池的支持。细心的读者可能会发现清单中的语句和普通 JDBC 2 的代码没什么两样。这是因为语句的缓冲是完全在内部实现的。这就意味着,在 JDBC 3.0 下,您现存的代码可以自动利用语句池。但可惜的是,这也意味着您将不能控制哪个预备语句将被缓冲,而只能控制被缓存的语句的数目。 清单 3. 缓冲预备语句 String INSERT_BOOK_QUERY = "INSERT INTO BOOKLIST " + '(AUTHOR, TITLE) " + "VALUES (?, ?) "; Connection conn = aPooledConnection.getConnection(); PreparedStatement ps = conn.prepareStatement(INSERT_BOOK_QUERY); ps.setString(1, "Orwell, George"); ps.setString(2, "1984"); ps.executeUpdate(); ps.close(); conn.close(); // ... conn = aPooledConnection.getConnection(); // Since the connection is from a PooledConnection, the data layer has // the option to retrieve this statement from its statement pool, // saving the VM from re-compiling the statement again. PreparedStatement cachedStatement = conn.prepareStatemet(INSERT_BOOK_QUERY); // ... 在您的事务中使用 Savepoint 也许在 JDBC 3.0 中最令人兴奋的附加特点就是 Savepoint 了。JDBC 2 中的事务支持让开发人员可以控制对数据的并发访问,从而保证持续数据总是保持一致的状态。可惜的是,有时候需要的是对事务多一点的控制,而不是在当前的事务中简单地对每一个改变进行回滚。在 JDBC 3.0 下,您就可以通过 Savepoint 获得这种控制。Savepoint 接口允许您将事务分割为各个逻辑断点,以控制有多少事务需要回滚。图 1 将说明如何在事务中运用 Savepoint。 图 1. Savepoint 的直观表示 您或许不是经常需要使用 Savepoint。然而,在一种普遍的情况下 Savepoint 会发挥作用,那就是您需要作一系列的改变,但是在知道所有的结果之前不能确定应该保留这些改变的哪一部分。清单 4 中的代码示例说明了如何使用 Savepoint 接口。 清单 4. 使用 Savepoint conn.setAutoCommit(false); // Set a conservative transaction isolation level. conn.setTransactionIsolation(Connection.TRANSACTION_SERIALIZABLE); Statement stmt = conn.createStatement(); int rows = stmt.executeUpdate( "INSERT INTO authors " + '(first_name, last_name) VALUES " + '('Lewis', 'Carroll')"); // Set a named savepoint. Savepoint svpt = conn.setSavepoint("NewAuthor"); // ... rows = stmt.executeUpdate( "UPDATE authors set type = 'fiction' " + "WHERE last_name = 'Carroll'"); // ... conn.rollback(svpt); // ... // The author has been added, but not updated. conn.commit(); 结论 JDBC 3.0 现在正在测试期中,官方发行定在 2001 年下半年。主要的数据库厂商正在致力于提供 JDBC 3.0 的驱动程序,一些早期的测试版驱动程序已经可以获得。JDBC 3.0 的改变虽然在本质上不是革命性的,但也是一个非常重要的进步。通过在现有功能上的扩展,新的 JDBC 规范带给您的是新的策略,以解决您的关系数据库的问题。 Post by EugeneCao @ 08:36 为我的blog增加了一些个性化的修改.
2004-09-09 09:01 也就是炒炒代码 :) 增加了一个天气和flash时钟. 还有很眩的flsh金鱼!! Post by EugeneCao @ 09:01 SQL*PLUS命令的使用大全
2004-09-07 12:59 Oracle的sqlplus是与oracle进行交互的客户端工具。在sqlplus中,可以运行sqlplus命令与sqlplus语句。 我们通常所说的DML、DDL、DCL语句都是sqlplus语句,它们执行完后,都可以保存在一个被称为sql buffer的内存区域中,并且只能保存一条最近执行的sql语句,我们可以对保存在sql buffer中的sql 语句进行修改,然后再次执行,sqlplus一般都与数据库打交道。 除了sqlplus语句,在sqlplus中执行的其它语句我们称之为sqlplus命令。它们执行完后,不保存在sql buffer的内存区域中,它们一般用来对输出的结果进行格式化显示,以便于制作报表。 下面就介绍一下一些常用的sqlplus命令:
- 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 我们可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时,用上面的任一命令即可,这类似于dos中的批处理。
- 对当前的输入进行编辑 SQL>edit
- 重新运行上一次运行的sql语句 SQL>/
- 将显示的内容输出到指定文件 SQL> SPOOL file_name 在屏幕上的所有内容都包含在该文件中,包括你输入的sql语句。
- 关闭spool输出 SQL> SPOOL OFF 只有关闭spool输出,才会在输出文件中看到输出的内容。 6.显示一个表的结构 SQL> desc table_name
- COL命令: 主要格式化列的显示形式。 该命令有许多选项,具体如下: COL[UMN] [{ column|expr} [ option ...]] Option选项可以是如下的子句: ALI[AS] alias CLE[AR] FOLD_A[FTER] FOLD_B[EFORE] FOR[MAT] format HEA[DING] text JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} LIKE { expr|alias} NEWL[INE] NEW_V[ALUE] variable NOPRI[NT]|PRI[NT] NUL[L] text OLD_V[ALUE] variable ON|OFF WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] 1). 改变缺省的列标题 COLUMN column_name HEADING column_heading For example: Sql>select * from dept; DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK sql>col LOC heading location sql>select * from dept; DEPTNO DNAME location
10 ACCOUNTING NEW YORK 2). 将列名ENAME改为新列名EMPLOYEE NAME并将新列名放在两行上: Sql>select * from emp Department name Salary
10 aaa 11 SQL> COLUMN ENAME HEADING ’Employee|Name’ Sql>select * from emp Employee Department name Salary
10 aaa 11 note: the col heading turn into two lines from one line. 3). 改变列的显示长度: FOR[MAT] format Sql>select empno,ename,job from emp; EMPNO ENAME JOB
7369 SMITH CLERK 7499 ALLEN SALESMAN 7521 WARD SALESMAN Sql> col ename format a40 EMPNO ENAME JOB
7369 SMITH CLERK 7499 ALLEN SALESMAN 7521 WARD SALESMAN 4). 设置列标题的对齐方式 JUS[TIFY] {L[EFT]|C[ENTER]|C[ENTRE]|R[IGHT]} SQL> col ename justify center SQL> / EMPNO ENAME JOB
7369 SMITH CLERK 7499 ALLEN SALESMAN 7521 WARD SALESMAN 对于NUMBER型的列,列标题缺省在右边,其它类型的列标题缺省在左边 5). 不让一个列显示在屏幕上 NOPRI[NT]|PRI[NT] SQL> col job noprint SQL> / EMPNO ENAME
7369 SMITH 7499 ALLEN 7521 WARD 6). 格式化NUMBER类型列的显示: SQL> COLUMN SAL FORMAT $99,990 SQL> / Employee Department Name Salary Commission
30 ALLEN $1,600 300 7). 显示列值时,如果列值为NULL值,用text值代替NULL值 COMM NUL[L] text SQL>COL COMM NUL[L] text 8). 设置一个列的回绕方式 WRA[PPED]|WOR[D_WRAPPED]|TRU[NCATED] COL1
HOW ARE YOU? SQL>COL COL1 FORMAT A5 SQL>COL COL1 WRAPPED COL1
HOW A RE YO U? SQL> COL COL1 WORD_WRAPPED COL1
HOW ARE YOU? SQL> COL COL1 WORD_WRAPPED COL1
HOW A 9). 显示列的当前的显示属性值 SQL> COLUMN column_name 10). 将所有列的显示属性设为缺省值 SQL> CLEAR COLUMNS 8. 屏蔽掉一个列中显示的相同的值 BREAK ON break_column SQL> BREAK ON DEPTNO SQL> SELECT DEPTNO, ENAME, SAL FROM EMP WHERE SAL < 2500 ORDER BY DEPTNO; DEPTNO ENAME SAL
10 CLARK 2450 MILLER 1300 20 SMITH 800 ADAMS 1100 9. 在上面屏蔽掉一个列中显示的相同的值的显示中,每当列值变化时在值变化之前插入n个空行。 BREAK ON break_column SKIP n SQL> BREAK ON DEPTNO SKIP 1 SQL> / DEPTNO ENAME SAL
10 CLARK 2450 MILLER 1300 20 SMITH 800 ADAMS 1100 10. 显示对BREAK的设置 SQL> BREAK 11. 删除6、7的设置 SQL> CLEAR BREAKS 12. Set 命令: 该命令包含许多子命令: SET system_variable value system_variable value 可以是如下的子句之一: APPI[NFO]{ON|OFF|text} ARRAY[SIZE] {15|n} AUTO[COMMIT]{ON|OFF|IMM[EDIATE]|n} AUTOP[RINT] {ON|OFF} AUTORECOVERY [ON|OFF] AUTOT[RACE] {ON|OFF|TRACE[ONLY]} [EXP[LAIN]] [STAT[ISTICS]] BLO[CKTERMINATOR] {.|c} CMDS[EP] {;|c|ON|OFF} COLSEP {|text} COM[PATIBILITY]{V7|V8|NATIVE} CON[CAT] {.|c|ON|OFF} COPYC[OMMIT] {0|n} COPYTYPECHECK {ON|OFF} DEF[INE] {&|c|ON|OFF} DESCRIBE [DEPTH {1|n|ALL}][LINENUM {ON|OFF}][INDENT {ON|OFF}] ECHO {ON|OFF} EDITF[ILE] file_name[.ext] EMB[EDDED] {ON|OFF} ESC[APE] {|c|ON|OFF} FEED[BACK] {6|n|ON|OFF} FLAGGER {OFF|ENTRY |INTERMED[IATE]|FULL} FLU[SH] {ON|OFF} HEA[DING] {ON|OFF} HEADS[EP] {||c|ON|OFF} INSTANCE [instance_path|LOCAL] LIN[ESIZE] {80|n} LOBOF[FSET] {n|1} LOGSOURCE [pathname] LONG {80|n} LONGC[HUNKSIZE] {80|n} MARK[UP] HTML [ON|OFF] [HEAD text] [BODY text] [ENTMAP {ON|OFF}] [SPOOL {ON|OFF}] [PRE[FORMAT] {ON|OFF}] NEWP[AGE] {1|n|NONE} NULL text NUMF[ORMAT] format NUM[WIDTH] {10|n} PAGES[IZE] {24|n} PAU[SE] {ON|OFF|text} RECSEP {WR[APPED]|EA[CH]|OFF} RECSEPCHAR {|c} SERVEROUT[PUT] {ON|OFF} [SIZE n] [FOR[MAT] {WRA[PPED]|WOR[D_ WRAPPED]|TRU[NCATED]}] SHIFT[INOUT] {VIS[IBLE]|INV[ISIBLE]} SHOW[MODE] {ON|OFF} SQLBL[ANKLINES] {ON|OFF} SQLC[ASE] {MIX[ED]|LO[WER]|UP[PER]} SQLCO[NTINUE] {> |text} SQLN[UMBER] {ON|OFF} SQLPRE[FIX] {#|c} SQLP[ROMPT] {SQL>|text} SQLT[ERMINATOR] {;|c|ON|OFF} SUF[FIX] {SQL|text} TAB {ON|OFF} TERM[OUT] {ON|OFF} TI[ME] {ON|OFF} TIMI[NG] {ON|OFF} TRIM[OUT] {ON|OFF} TRIMS[POOL] {ON|OFF} UND[ERLINE] {-|c|ON|OFF} VER[IFY] {ON|OFF} WRA[P] {ON|OFF} 1). 设置当前session是否对修改的数据进行自动提交 SQL>SET AUTO[COMMIT] {ON|OFF|IMM[EDIATE]| n} 2).在用start命令执行一个sql脚本时,是否显示脚本中正在执行的SQL语句 SQL> SET ECHO {ON|OFF} 3).是否显示当前sql语句查询或修改的行数 SQL> SET FEED[BACK] {6|n|ON|OFF} 默认只有结果大于6行时才显示结果的行数。如果set feedback 1 ,则不管查询到多少行都返回。当为off 时,一律不显示查询的行数 4).是否显示列标题 SQL> SET HEA[DING] {ON|OFF} 当set heading off 时,在每页的上面不显示列标题,而是以空白行代替 5).设置一行可以容纳的字符数 SQL> SET LIN[ESIZE] {80|n} 如果一行的输出内容大于设置的一行可容纳的字符数,则折行显示。 6).设置页与页之间的分隔 SQL> SET NEWP[AGE] {1|n|NONE} 当set newpage 0 时,会在每页的开头有一个小的黑方框。 当set newpage n 时,会在页和页之间隔着n个空行。 当set newpage none 时,会在页和页之间没有任何间隔。 7).显示时,用text值代替NULL值 SQL> SET NULL text 8).设置一页有多少行数 SQL> SET PAGES[IZE] {24|n} 如果设为0,则所有的输出内容为一页并且不显示列标题 9).是否显示用DBMS_OUTPUT.PUT_LINE包进行输出的信息。 SQL> SET SERVEROUT[PUT] {ON|OFF} 在编写存储过程时,我们有时会用dbms_output.put_line将必要的信息输出,以便对存储过程进行调试,只有将serveroutput变量设为on后,信息才能显示在屏幕上。 10).当SQL语句的长度大于LINESIZE时,是否在显示时截取SQL语句。 SQL> SET WRA[P] {ON|OFF} 当输出的行的长度大于设置的行的长度时(用set linesize n命令设置),当set wrap on时,输出行的多于的字符会另起一行显示,否则,会将输出行的多于字符切除,不予显示。 11).是否在屏幕上显示输出的内容,主要用与SPOOL结合使用。 SQL> SET TERM[OUT] {ON|OFF} 在用spool命令将一个大表中的内容输出到一个文件中时,将内容输出在屏幕上会耗费大量的时间,设置set termspool off后,则输出的内容只会保存在输出文件中,不会显示在屏幕上,极大的提高了spool的速度。 12).将SPOOL输出中每行后面多余的空格去掉 SQL> SET TRIMS[OUT] {ON|OFF} 13)显示每个sql语句花费的执行时间 set TIMING {ON|OFF} 14.修改sql buffer中的当前行中,第一个出现的字符串 C[HANGE] /old_value/new_value SQL> l 1* select * from dept SQL> c/dept/emp 1* select * from emp 15.编辑sql buffer中的sql语句 EDI[T] 16.显示sql buffer中的sql语句,list n显示sql buffer中的第n行,并使第n行成为当前行 L[IST] [n] 17.在sql buffer的当前行下面加一行或多行 I[NPUT] 18.将指定的文本加到sql buffer的当前行后面 A[PPEND] SQL> select deptno, 2 dname 3 from dept; DEPTNO DNAME
10 ACCOUNTING 20 RESEARCH 30 SALES 40 OPERATIONS SQL> L 2 2* dname SQL> a ,loc 2* dname,loc SQL> L 1 select deptno, 2 dname,loc 3* from dept SQL> / DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK 20 RESEARCH DALLAS 30 SALES CHICAGO 40 OPERATIONS BOSTON 19.将sql buffer中的sql语句保存到一个文件中 SAVE file_name 20.将一个文件中的sql语句导入到sql buffer中 GET file_name 21.再次执行刚才已经执行的sql语句 RUN or / 22.执行一个存储过程 EXECUTE procedure_name 23.在sqlplus中连接到指定的数据库 CONNECT user_name/passwd@db_alias 24.设置每个报表的顶部标题 TTITLE 25.设置每个报表的尾部标题 BTITLE 26.写一个注释 REMARK [text] 27.将指定的信息或一个空行输出到屏幕上 PROMPT [text] 28.将执行的过程暂停,等待用户响应后继续执行 PAUSE [text] Sql>PAUSE Adjust paper and press RETURN to continue. 29.将一个数据库中的一些数据拷贝到另外一个数据库(如将一个表的数据拷贝到另一个数据库) COPY {FROM database | TO database | FROM database TO database} {APPEND|CREATE|INSERT|REPLACE} destination_table [(column, column, column, ...)] USING query sql>COPY FROM SCOTT/TIGER@HQ TO JOHN/CHROME@WEST create emp_temp USING SELECT * FROM EMP 30.不退出sqlplus,在sqlplus中执行一个操作系统命令: HOST Sql> host hostname 该命令在windows下可能被支持。 31.在sqlplus中,切换到操作系统命令提示符下,运行操作系统命令后,可以再次切换回sqlplus: ! sql>! $hostname $exit sql> 该命令在windows下不被支持。 32.显示sqlplus命令的帮助 HELP 如何安装帮助文件: Sql>@ ?\sqlplus\admin\help\hlpbld.sql ?\sqlplus\admin\help\helpus.sql Sql>help index 33.显示sqlplus系统变量的值或sqlplus环境变量的值 Syntax SHO[W] option where option represents one of the following terms or clauses: system_variable ALL BTI[TLE] ERR[ORS] [{FUNCTION|PROCEDURE|PACKAGE|PACKAGE BODY| TRIGGER|VIEW|TYPE|TYPE BODY} [schema.]name] LNO PARAMETERS [parameter_name] PNO REL[EASE] REPF[OOTER] REPH[EADER] SGA SPOO[L] SQLCODE TTI[TLE] USER
- . 显示当前环境变量的值: Show all
- . 显示当前在创建函数、存储过程、触发器、包等对象的错误信息 Show error 当创建一个函数、存储过程等出错时,变可以用该命令查看在那个地方出错及相应的出错信息,进行修改后再次进行编译。
- . 显示初始化参数的值: show PARAMETERS [parameter_name]
- . 显示数据库的版本: show REL[EASE]
- . 显示SGA的大小 show SGA 6). 显示当前的用户名 show user Post by EugeneCao @ 12:59