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