今天在群里有人问如何查看某个用户下的所有空表,有人回答是写PL/SQL
SQL> DECLARE
2 v_table tabs.table_name%TYPE;
3 v_sql VARCHAR2(888);
4 v_q NUMBER;
5 CURSOR c1 IS
6 SELECT table_name tn FROM tabs;
7 TYPE c IS REF CURSOR;
8 c2 c;
9 BEGIN
10 DBMS_OUTPUT.PUT_LINE('以下为空数据表的表名:');
11 FOR r1 IN c1 LOOP
12 v_table :=r1.tn;
13 v_sql :='SELECT count(*) q FROM '||v_table||' where rownum = 1';
14 OPEN c2 FOR v_sql;
15 LOOP
16 FETCH c2 INTO v_q;
17 EXIT WHEN c2%NOTFOUND;
18 IF v_q=0 THEN
19 DBMS_OUTPUT.PUT_LINE(v_table);
20 END IF;
21 END LOOP;
22 CLOSE c2;
23 END LOOP;
24 EXCEPTION
25 WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error occurred');
26 END;
27 /
PL/SQL 过程已成功完成。
SQL> set serveroutput on
SQL> /
以下为空数据表的表名:
T_FILE_INFO_RAW
T_DOSSIER_INFO_RAW
T_FONDS_INFO_RAW
其实不用那么麻烦,而且表如果很多的话,执行会很慢
先收集下用户的信息
SQL> exec dbms_stats.gather_schema_stats(user);
PL/SQL 过程已成功完成。
再查看user_tables数据字典
SQL> exec dbms_stats.gather_schema_stats(user);
PL/SQL 过程已成功完成。
-------------------- ----------
T_FILE_INFO_RAW 0
T_DOSSIER_INFO_RAW 0
T_FONDS_INFO_RAW 0
验证结果是否准确
SQL> select count(*) from T_FILE_INFO_RAW;
COUNT(*)
0
SQL> select count(*) from T_DOSSIER_INFO_RAW;
COUNT(*)
0
SQL> select count(*) from T_FONDS_INFO_RAW;
COUNT(*)
0
向T_FONDS_INFO_RAW表插入几条数据,在查看下
SQL> insert into T_FONDS_INFO_RAW (FILE_SUM) values(1111);
已创建 1 行。
SQL> insert into T_FONDS_INFO_RAW select * from T_FONDS_INFO_RAW;
已创建 1 行。
SQL> /
已创建2行。
SQL> /
已创建4行。
SQL> commit;
提交完成。
在收集下用户的信息
SQL> exec dbms_stats.gather_schema_stats(user);
PL/SQL 过程已成功完成。
SQL> select table_name,num_rows from user_tables;
TABLE_NAME NUM_ROWS
------------------------------ ----------
T_FILE_INFO_RAW 0
T_DOSSIER_INFO_RAW 0
T_FONDS_INFO_RAW 8
SQL> select count(*) from T_FONDS_INFO_RAW;
COUNT(*)
8
这种方法要比写PL/SQL方便得多。
分享到:
相关推荐
当我们执行`exp`命令来备份某个用户的数据库时,如果该用户下存在未插入任何数据的空表,则这些空表可能不会被正确地备份。这是因为在创建空表时,Oracle并不会为这些表分配存储空间(extent)。只有当对这些表插入...
- **权限问题**: 确保调用该函数的用户具有足够的权限访问所有表。 - **性能考量**: 如果数据库中有大量表,该函数可能运行较慢。可以考虑优化或增加限制条件来提高效率。 - **错误处理**: 当前函数没有实现错误处理...
2. **表结构分析**:开发人员在进行数据库设计或维护时,常常需要查看表结构的详细信息,此时通过执行上述SQL查询语句即可方便地获取相关信息。 3. **SQL脚本编写**:在编写复杂的SQL查询或存储过程时,了解目标表...
- **空模块**: 当用户访问的应用模块不存在于项目中时,就被称为“空模块”。 **2. 处理方式** - 在ThinkPHP5中,可以通过在路由配置文件`route.php`中添加特定的路由规则来处理空模块。 - 首先定位到项目的路由...
有时候,当用户移除某个应用程序时,该程序的安装目录可能并未完全清理,留下了空的子文件夹。此外,用户在整理文件过程中也可能无意间创建了空文件夹。这些无用的文件夹不仅占用了硬盘空间,还可能导致文件管理混乱...
达梦数据库表占用磁盘空间统计.sql
如果服务器未正确配置,那么恶意用户可以通过发送空主机头的请求来尝试访问未授权的资源,或者进行其他类型的攻击活动。因此,确保服务器能够识别并处理这类请求是十分必要的。 #### 四、删除空主机头的方法 #####...
标题“删除目录下所有.class文件”涉及到的是一个与文件管理和批处理脚本相关的问题,主要目的是清理特定类型的文件,即.java编译后的.class文件。在Java开发过程中,这些.class文件是程序的可执行形式,但有时为了...
确保数据可用于数据透视表:删除所有空行或空列。删除所有自动小计。确保第一行包含各列的描述性标题。确保各列只包含一种类型的数据—例如,一列中是文本,另一列中是数值。 其次,启动“数据透视表和数据透视图...
通过以上讨论,我们了解到如何使用C#的递归方法查找文件夹下的所有子目录,并了解了相关的关键知识点,包括递归概念、文件操作、WinForm应用的构建以及项目配置。在实际开发中,可以根据具体需求进行调整和优化。
当用户尝试删除位于路径`C:\Users\XX\Desktop`下的某个空文件夹时,系统弹出提示框显示“该项目已不在C:\Users\XX\Desktop中”,即使该文件夹明显存在于该位置。这一现象通常发生在Windows Vista Home Basic操作系统...
常见的冲突解决策略有开放寻址法(当冲突发生时,寻找下一个空的哈希槽)和链地址法(每个数组槽包含一个链表,所有哈希到同一位置的元素都在该链表中)。 4. **扩展与收缩**:随着数据量的增减,哈希表可能需要...
- **修改学生信息**:`modify()`函数允许用户修改链表中某个学生的姓名。用户需要提供学生的学号,系统会找到对应的节点并更新其姓名。 - **删除学生信息**:`delete()`函数根据用户提供的学号从链表中删除对应的...
如果某个字段为空,则会显示警告消息并聚焦于该字段。 ```javascript function check(form) { var myform = document.getElementById("form1"); if (trim(myform.calldevice.value) == "") { alert("用户名不能...
4. **事件驱动编程**:在易语言中,我们通常会将这个判断逻辑放在某个事件的响应函数中,比如“编辑框失去焦点”事件或“按钮点击”事件,这样在用户完成编辑后或尝试提交数据时,程序会自动进行判断。 5. **错误...
基本功能一:查看某个用户或用户组对某个目录下各个文件或文件夹的权限。 命令1:了解某个文件或者目录的权限设定。 accesschk g:/test 会遍历test文件内的所有文件。 可以看到对这个目录下的每一个文件它都列出...
在Windows操作系统中,有时我们需要清理特定目录下的所有文件,例如这里的`tomcat work`文件夹。这可能是为了释放磁盘空间、优化系统性能或者重置应用程序的状态。在本例中,我们将探讨如何通过命令行或者批处理命令...
例如,在用户表和用户组表中,如果删除了某个用户组,那么所属的用户记录的用户组ID将被置空。 禁止(No Action / Restrict)方式是指当主表中的记录被删除或更新时,从表中的相关记录将不受影响。这种方式可以确保...
同时,考虑响应式设计,确保在不同设备和屏幕尺寸下都能正常工作。 总结起来,实现“点击地图弹出层,点击地图某个省,弹出相关省信息,可以转为动态”的功能,需要结合前端开发技术(HTML、CSS、JavaScript)、...
如果已经通过`USE`命令选择了特定的数据库,则这条命令将列出该数据库下的所有表。 #### 四、查看表结构与状态 - **命令**: `DESCRIBE table_name;` 或 `DESC table_name;` 这两个命令都可以用来查看指定表的列...