這裏有一個問題給大家,有沒有什麼辦法通過動態替換cursor.column_name
語法中的column_name
來使PL/SQL代碼工作?我知道我混淆了PL/SQL引擎,但我不能就如何解決這一問題完全肯定...動態修整列值
目前我得到的錯誤如下,但我認爲實際的問題是,PL/SQL引擎不知道如何解釋TRIM (e_rec.v_temp_column_name)
:
「[錯誤] PLS-00302(133:26):PLS-00302:組件 'V_TEMP_COLUMN_NAME' 必須聲明爲」
參數:x_person_rec IN OUT xxsome_table%ROWTYPE
v_temp_column_name dba_tab_columns.column_name%TYPE;
...
BEGIN
FOR e_rec IN (SELECT * FROM xxsome_table WHERE ..)
LOOP
--LOG (3, 'Loading/Sanitizing Header Record');
FOR col IN (SELECT column_name
FROM dba_tab_columns
WHERE table_name = UPPER ('xxsome_table'))
LOOP
--LOG (3, 'Sanitizing Column Name: ' || col.column_name);
v_temp_column_name := col.column_name;
x_person_rec.v_temp_column_name := TRIM (e_rec.v_temp_column_name);
END LOOP;
END LOOP;
...
我已經試過這樣做(這會導致不同的錯誤):x_person_rec.col.column_name := TRIM (e_rec.col.column_name);
感謝您的答覆,我想你說什麼,我需要聽到的,其中我會處理在ETL過程中修剪的數據。您建議動態構建SELECT實際上是解決此問題的好方法,所以我很欣賞額外的努力! –
沒問題@Roberto;當設置一些東西來修剪所有東西時,很麻煩,但從長遠來看,它更容易,因爲您只需要一次而不是每次都這樣做。 – Ben