sqlplus中如果输入的sql语句前面有一行写错了,怎么返回修改?

 转载:

   

示例
SQL>; select * from myuser;

        ID USERNAME   PASSWORD   SJ
---------- ---------- ---------- -------------------
         1 John       1234       2003-05-01 00:00:00
         2 Jack       12345      2003-05-02 00:00:00
         3 Rose       2345       2003-04-20 00:00:00
         4 Joe        384657     2003-05-01 12:36:24
         5 Tom        384655     2003-05-01 12:33:24
         6 Jordan     384455     2003-05-01 12:33:36

已选择6行。

SQL>; select 8 from myuser where
  2  to_char(sj,'yyyy-mm-dd')='2003-05-01';//其中8 是输错的

         8
----------
         8
         8
         8
         8

方法一:

SQL>1;
SQL>c/8/*;
就可以了,你可以看看oracle的sqlplus介绍

change的语法:
c /old statement/new statement

方法二:

不管三七二十一,先执行(这样就会写入缓存中),然后edit即可。
SQL>; edit//调出编辑器重新编辑
已写入文件 afiedt.buf

  1  select * from myuser where
  2* to_char(sj,'yyyy-mm-dd')='2003-05-01'
SQL>; /   //用“/”执行写入缓存中的刚编辑好的命令

        ID USERNAME   PASSWORD   SJ
---------- ---------- ---------- -------------------
         1 John       1234       2003-05-01 00:00:00
         4 Joe        384657     2003-05-01 12:36:24
         5 Tom        384655     2003-05-01 12:33:24
         6 Jordan     384455     2003-05-01 12:33:36

 

如果出现以下这种情况:

SQL> select table_names from user_tables;
select table_names from user_tables
          *
ERROR at line 1:
ORA-00904: "TABLE_NAMES": invalid identifier

SQL> edit
Wrote file afiedt.buf
38
则:

在UNIX下要设置编辑器
define _editor=vi
然后用命令edit就可以了,但是不能永久设置;
在 $ORACLE_HOME/sqlplus/admin/glogin.sql 设置即可永久设置

或者:

在sqlplus下执行
store set login.sql
存下当前的环境设置,
这样以后执行sqlplus时就会自动读取login.sql这个文件

posted @ 2013-05-20 23:25  蒋奥  阅读(12035)  评论(0编辑  收藏  举报