【发布时间】:2017-03-17 11:44:42
【问题描述】:
我正在尝试重写以下代码,以避免 ORA-00942 错误(表或视图不存在)。这是因为在我的代码编译过程中,表(MY_TABLE_NAME)仍然不存在,因此我需要将其动态化。
这是代码(使用通用名称)
DECLARE
C INTEGER := 0;
BEGIN
SELECT COUNT(1) INTO C FROM USER_TABLES WHERE TABLE_NAME = 'MY_TABLE_NAME';
IF C > 0 THEN
DECLARE
CURSOR c_var IS SELECT COLUMN_1, COLUMN_2 FROM MY_TABLE_NAME WHERE ACTIVE = 1;
v_id NUMBER(15);
BEGIN
FOR prec IN c_var LOOP
......testcode
END LOOP;
EXECUTE IMMEDIATE 'testcode';
END;
END IF;
END;
/
没有必要使用游标..所以我尝试重写它并使用正常的 for 循环,因为我认为使代码更具动态性更容易,但是我仍在努力
【问题讨论】:
-
你到底想用
MY_TABLE_NAME做什么?选择一行,几行,插入,更新,删除? -
看看here。为什么这个问题如此不同?
-
@Aleksej 好吧..它不像我之前的一篇文章那么容易..我无法通过立即执行来解决这个问题,或者至少我尝试过但失败了,因为这里的代码更复杂
-
@ammoq 我的光标选择了行并在开始/结束语句中进行了更新..但为什么它相关?我的代码由于以下行而失败:CURSOR c_var IS SELECT COLUMN_1, COLUMN_2 FROM MY_TABLE_NAME WHERE ACTIVE = 1;...它无法编译此行,因为“MY_TABLE_NAME”尚不存在
-
@NoName123 显然,您必须重写那部分,但是当我不知道您要归档什么时,就不可能说改写什么。