我已經通過搜索,發現只有這個問題: Loop through columns SQL 它在某些方面類似,但不涉及PL/SQL和Oracle數據庫,因此我要求新的問題。如何通過PL/SQL循環遍歷列
我有一張桌子與約。 2000行和600列。有一些列只包含每行中的NULL。我想要做的是編寫一個PL/SQL過程來從表中刪除這些列。 所以我遇到了一個問題,我想通過all_tab_columns視圖的幫助來遍歷PL/SQL中的列。您可以在下面看到我的代碼(我的表名是PreparedDocumentFeaturesValues):
PROCEDURE dropNullColumns AS
l_query VARCHAR2(10000);
all_row_count NUMBER;
null_row_count NUMBER;
BEGIN
SELECT count(*)
INTO all_row_count
FROM PreparedDocumentFeaturesValues;
FOR columnItem IN (SELECT column_name
FROM all_tab_columns
WHERE TABLE_NAME = UPPER('PreparedDocumentFeaturesValues'))
LOOP
SELECT count(*)
INTO null_row_count
FROM PreparedDocumentFeaturesValues
WHERE columnItem.column_name IS NULL;
IF all_row_count=null_row_count THEN
l_query := 'ALTER TABLE PreparedDocumentFeaturesValues DROP COLUMN ' || columnItem.column_name;
EXECUTE IMMEDIATE l_query;
END IF;
END LOOP;
END;
的問題是,聲明:
SELECT count(*)
INTO null_row_count
FROM PreparedDocumentFeaturesValues
WHERE columnItem.column_name IS NULL;
具有字符類型的列名和null_row_count總是等於0
我很確定,這裏有人知道我該如何處理這個問題(通過改進上面的代碼,或者有沒有其他方法可以做這樣的事情?> 在此先感謝您的幫助。