oracle怎么判断空表 oracle中空值判断

oracle 用sql如何判断数据库中的哪些表示空的

这是我在sybase数据库下的操作,供参考

为九江等地区用户提供了全套网页设计制作服务,及九江网站建设行业解决方案。主营业务为成都做网站、成都网站建设、成都外贸网站建设、九江网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!

1.选建一个表。

create TABLE D

(NO INT NULL,

NAME CHAR(20) NULL)

2.将库中所有表中的内容和表名做一个插入脚本。

select '

INSERT D

select count(*), "' +name+'" from '+name from sysobjects

where type ='U'

order by name

3. 将查询结果新建一页执行

4.无记录的表

SELECT * FROM D

WHERE NO=0

order by NAME

--OVER!

如何查询oracle是否导出空表

1、Oracle11g默认对空表不分配segment,故使用exp导出Oracle11g数据库时,空表不会导出。

2、设置deferred_segment_creation 参数为FALSE后,无论是空表还是非空表,都分配segment。

在sqlplus中,执行如下命令:

SQLalter system set deferred_segment_creation=false;

查看:

SQLshow parameter deferred_segment_creation;

该值设置后只对后面新增的表产生作用,对之前建立的空表不起作用。

3、可以使用手工为空表分配Extent的方式,来解决导出之前建立的空表的问题。说明如下:

3.1 使用ALLOCATE EXTENT的说明

使用ALLOCATE EXTENT可以为数据库对象分配Extent。其语法如下:

-----------

ALLOCATE EXTENT { SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer }

-----------

可以针对数据表、索引、物化视图等手工分配Extent。

ALLOCATE EXTENT使用样例:

ALLOCATE EXTENT

ALLOCATE EXTENT(SIZE integer [K | M])

ALLOCATE EXTENT(DATAFILE 'filename')

ALLOCATE EXTENT(INSTANCE integer)

ALLOCATE EXTENT(SIZE integer [K | M] DATAFILE 'filename')

ALLOCATE EXTENT(SIZE integer [K | M] INSTANCE integer)

针对数据表操作的完整语法如下:

-----------

ALTER TABLE [schema.]table_name ALLOCATE EXTENT [({ SIZE integer [K | M] | DATAFILE 'filename' | INSTANCE integer})]

-----------

故,需要构建如下样子简单的SQL命令:

-----------

alter table aTabelName allocate extent

-----------

3.2 构建对空表分配空间的SQL命令,

查询当前用户下的所有空表(一个用户最好对应一个默认表空间)。命令如下:

-----------

SQLselect table_name from user_tables where NUM_ROWS=0;

-----------

根据上述查询,可以构建针对空表分配空间的命令语句,如下:

-----------

SQLSelect 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0

-----------

批量输出上述生成的SQL语句,建立C:\createsql.sql,其内容如下:

-----------

set heading off;

set echo off;

set feedback off;

set termout on;

spool C:\allocate.sql;

Select 'alter table '||table_name||' allocate extent;' from user_tables where num_rows=0;

spool off;

-----------

执行C:\createsql.sql,命令如下:

-----------

SQL@ C:\createsql.sql;

-----------

执行完毕后,得到C:\allocate.sql文件。

打开该文件会看到,已经得到对所有空表分配空间的命令SQL语句。

3.4 执行SQL命令,对空表分配空间:

执行C:\allocate.sql,命令如下:

-----------

SQL@ C:\allocate.sql;

-----------

执行完毕,表已更改。

3.4 此时执行exp命令,即可把包括空表在内的所有表,正常导出。

另外:Oracle11g中,对密码是大小写敏感的,即密码中的字母是区分大小写的。

在Oracle10g中及以前,密码中的字母大小写无所谓。

如何知道oracle数据库哪些表是有数据的?哪些表是空的没有数据?

select * from all_all_tables

这是查询Oracle中的所有的表,包括SYS用户下的,你可以根据表空间和所属用户来限制查询结果

where owenr='' and tablespacename=''

想要查出没数据的话,all_all_tables中有个num_rows字段,记录该表数据是多少行的,rows=‘0’的肯定是没数据的,

select * from all_all_tables

where num_rows='0'

and owenr='所属用户' and tablespacename='所属表空间'

即可。

ORACLE查询空表

MSSQL不知道

oracle在plsql里执行如下代码:

DECLARE

v_table tabs.table_name%TYPE;

v_sql VARCHAR2(888);

v_q NUMBER;

CURSOR c1 IS

SELECT table_name tn FROM tabs;

TYPE c IS REF CURSOR;

c2 c;

BEGIN

DBMS_OUTPUT.PUT_LINE('以下为空数据表的表名:');

FOR r1 IN c1 LOOP

v_table :=r1.tn;

v_sql :='SELECT COUNT(*) q FROM '||v_table;

OPEN c2 FOR v_sql;

LOOP

FETCH c2 INTO v_q;

EXIT WHEN c2%NOTFOUND;

IF v_q=0 THEN

DBMS_OUTPUT.PUT_LINE(v_table);

END IF;

END LOOP;

CLOSE c2;

END LOOP;

EXCEPTION

WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error occurred');

END;

然后点output,显示的就是空表

oracle的if标签如何判空

select

--nvl(prplclaim.caseno, '0')是为空判断,当prplclaim.caseno为空时赋值0

--decode语法nvl(prplclaim.caseno, '0')为要进行判断的参数,

为0时赋值未结案,否则赋值已结案

decode(nvl(prplclaim.caseno, '0'),

'0',

'未结案',

'已结案'),

decode(nvl(prplclaim.casetype, '11'),

'11',

'未结案',

'2',

'正常结案',

'3',

'零结案',

'0',

'注销结案'),

from prplclaim prplclaim;


名称栏目:oracle怎么判断空表 oracle中空值判断
链接地址:http://azwzsj.com/article/hhejop.html