【发布时间】:2014-05-19 20:01:28
【问题描述】:
这里有一个问题要问大家,有没有办法通过动态替换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);
【问题讨论】:
标签: sql database oracle plsql oracle10g