1
我使用SQL Server构建了一个脚本,该脚本遍历数据库中的每个表并构建了一个动态语句,该语句在执行时显示列名,类型,填充值数和总行数每列。执行动态SQL语句表
我现在正在尝试与Oracle构建相同的东西,但我遇到了问题。下面的代码给了我一张充满了所有适当语句的表格,但是我如何执行并显示它们?
>SELECT
'SELECT ''' || atc.column_name || ''', ''' || atc.table_name || ''', ''' || atc.data_type || ''',
SUM(CASE WHEN temp.'|| atc.column_name || ' IS NULL THEN 0 ELSE 1 END) "Filled Values",
COUNT(temp.' || atc.column_name || ') "Total Records"
FROM all_tab_columns atc
JOIN '|| atc.table_name || ' temp ON atc.column_name = ''' ||
atc.column_name ||''' AND atc.table_name = ''' || atc.table_name || '''' AS SQLRow
FROM all_tab_columns atc;
这是从上面的代码所产生的语句的示例:
>SELECT 'INITIAL_EXTENT', 'ALL_ALL_TABLES', 'NUMBER',
SUM(CASE WHEN temp.INITIAL_EXTENT IS NULL THEN 0 ELSE 1 END) "Filled Values",
COUNT(temp.INITIAL_EXTENT) "Total Records"
FROM all_tab_columns atc
JOIN ALL_ALL_TABLES temp ON atc.column_name = 'INITIAL_EXTENT' AND atc.table_name = 'ALL_ALL_TABLES'
谢谢@Emmanuel,但是当我运行这个时不打印出结果。我也查找了流水线函数,但我也不太了解这些。 – TaiwanTimmy
当我运行你给我的代码时,它运行了大约两分钟,然后抱怨说这是'非法使用LONG数据类型'。你知道这可能是什么原因吗? – TaiwanTimmy
看到我的编辑,你应该找到好的信息。 – Emmanuel