易截截图软件、单文件、免安装、纯绿色、仅160KB

更改Sql*plus的提示符

  正常登陆sql*plus的步骤如下:
sbdatabase*orcl-/home/oracle>sqlplus /nolog
SQL*Plus: Release 10.2.0.3.0 - Production on Sun May 9 19:50:24 2010
Copyright (c) 1982, 2006, Oracle. All Rights Reserved.
SQL> conn hmsimis/test@orcl
Connected.
SQL>
可以看到前面的提示符是SQL,现在想修改提示的内容,该怎么办?在oracle10g中已经为我们提供了几个预先定义的变量可以让我们用来显示,比如下面这样:
SQL> define
DEFINE _DATE = "09-MAY-10" (CHAR)
DEFINE _CONNECT_IDENTIFIER = "orcl" (CHAR)
DEFINE _USER = "HMSIMIS" (CHAR)
DEFINE _PRIVILEGE = "" (CHAR)
DEFINE _SQLPLUS_RELEASE = "1002000300" (CHAR)
DEFINE _EDITOR = "vi" (CHAR)
DEFINE _O_VERSION = "Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning, OLAP and Data Mining options" (CHAR)
DEFINE _O_RELEASE = "1002000300" (CHAR)
SQL>
   通过set sqlprompt 命令,可以修改现实的内容, 比如像下面这样:
SQL> set sqlprompt '_USER _DATE > '
HMSIMIS 09-MAY-10 >
   这里使用了两个oracle已经定义的变量来定义显示的内容,可以看到目的已经到,如果oracle找不到在defined中定义的则原样输出,比如“>”原样输出了。
   如果我们想显示的内容在以上define中没有定义怎么办?还是有办法的,通过构造我们的信息让其显示,比如下面这样:
HMSIMIS 09-MAY-10 > column session_info new_value sql_prompt
HMSIMIS 09-MAY-10 > select '('||SID||','||serial#||','||')' session_info from v$session where username='HMSIMIS' and status='ACTIVE';
SESSION_INFO
------------------------------------------------------------------------------------
(957,6312,)
HMSIMIS 09-MAY-10 > set sqlprompt 'sql_prompt >';
(957,6312,) >
      这样一来想显示任何东西都不成问题了,是不是很有意思!


相关文档:

sql语句优化原则

1.多where,少having
where用来过滤行,having用来过滤组
2.多union all,少union
union删除了重复的行,因此花费了一些时间
3.多Exists,少in
Exists只检查存在性,性能比in强很多,有些朋友不会用Exists,就举个例子
例,想要得到有电话号码的人的基本信息,table2有冗余信息
select * from table1;--(id,n ......

sql 游标的使用

一个例子:从tszl表中查出数据,根据cs字段的值决定往BOOK_SERIAL表中插入几行数据。
declare @num int
declare @id varchar(60)
declare @classbm varchar(60)
set @classBm='101'
declare id cursor for select id,cs from  [tszl]
open id
fetch next from id into @id,@num
while @@fetch_status!=-1
&nb ......

sql中日期格式

1 ---上个月月初第一天
  2  select CONVERT(varchar(12) , DATEADD(mm,DATEDIFF(mm,0,dateadd(mm,-1,getdate())),0), 112 )
  3
  4  ---上个月月末最后一天
  5  select CONVERT(varchar(12),dateadd(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate()),0)), 112 )
  6
  7 ......

几个删除重复记录的SQL语句

比如现在有一人员表  (表名:peosons)
若想将姓名、身份证号、住址这三个字段完全相同的记录查询出来
select   p1.*   from   persons   p1,persons   p2   where   p1.id<>p2.id   and   p1.cardid &nbs ......

特殊SQL语句

1.查询连接到某数据库的连接数
   select   count(*)   as   连接数   from   master..sysprocesses   where   db_name(dbid)='数据库名' ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号