神秘的 ORACLE DUAL表
神秘的 ORACLE DUAL表
DUAL ? 有什么神秘的? 当你想得到ORACLE系统时间, 简简单单敲一行SQL
不就得了吗? 故弄玄虚….
SQL> select sysdate from dual;
SYSDATE
———
28-SEP-03
哈哈, 确实DUAL的使用很方便. 但是大家知道DUAL倒底是什么OBJECT, 它有什么特殊的行为吗? 来,我们一起看一看.
首先搞清楚DUAL是什么OBJECT :
SQL> connect system/manager
Connected.
SQL> select owner, object_name , object_type from dba_objects where object_name like ‘%DUAL%’;
OWNER OBJECT_NAME OBJECT_TYPE
————— ————— ————-
SYS DUAL TABLE
PUBLIC DUAL SYNONYM
原来DUAL是属于SYS schema的一个表,然后以PUBLIC SYNONYM的方式供其他数据库USER使用.
再看看它的结构:
SQL> desc dual
Name Null? Type
—————————————– ——– —————————-
DUMMY VARCHAR2(1)
SQL>
只有一个名字叫DUMMY的字符型COLUMN .
然后查询一下表里的数据:
SQL> select dummy from dual;
DUMMY
———-
X
哦, 只有一条记录, DUMMY的值是’X’ .很正常啊,没什么奇怪嘛. 好,下面就有奇妙的东西出现了!
插入一条记录:
SQL> connect sys as sysdba
Connected.
SQL> insert into dual values ( ‘Y’);
1 row created.
SQL> commit;
Commit complete.
SQL> select count(*) from dual;
COUNT(*)
———-
2
相关文档:
--创建一个包
create or replace package types
as
type cursorType is ref cursor;
end types;
--创建存储过程,游标类型返回参数
create or replace procedure SP_Fee_Instance(v_company in varchar, v_sdate in nva ......
1)SQL Server链接服务器 Linked Server方式(SQLServer作为源服务器):
http://www.cnblogs.com/riccc/archive/2009/07/23/sql-server-linked-server.html
2)Oracle高级复制(oracle数据库之间复制):
http://www.chinaunix.net/bbsjh/8/54.html
其他技术方法:
snapshot
Replication ......
oracle 中 TO_DATE 函数的时间格式,以 2008-09-10 23:45:56 为例
格式
说明
显示值
备注
Year(年):
yy
two digits(两位年)
08
yyy
three digits(三位年)
008
yyyy
four digits(四位年)
2008
Month(月):
mm
number(两位月)
09
mon
abbre ......
SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;
A A ZERO ......