【发布时间】:2014-02-06 15:39:38
【问题描述】:
我想为行类型的字段赋值,但我不知道该怎么做。
假设我的数据库中有一个表X。
还假设我有以下变量
-
a(X%ROWTYPE),代表X表的一行 -
b(VARCHAR2),包含表 X 的列名 -
c(VARCHAR2),包含我想要存储在 a.b 中的内容
我想做什么: 类似a.b := c。
我想出了这样的东西:
EXECUTE IMMEDIATE 'SELECT '|| c || ' INTO a.' || b || ' FROM DUAL';
显然,这不是正确的方法。我收到 ORA-0095: missing keyword 错误。
谁能帮我解决这个问题?
这是完整的代码:
DECLARE
tRow MyTable%ROWTYPE;
col_name VARCHAR(10) := 'Length';
nValue NUMBER(12,4) := 0.001;
dynamic_request VARCHAR(300);
BEGIN
dynamic_request := 'SELECT '|| nValue || ' INTO tRow.' || col_name || ' FROM DUAL';
EXECUTE IMMEDIATE dynamic_request;
END;
【问题讨论】:
-
你为什么要使用立即执行?那是行不通的。
-
你有什么建议?
-
请提供更多关于您尝试做什么的背景信息。 PL/SQL 代码的其余部分在哪里?
-
抱歉,原帖已编辑。
-
抱歉,仍然不确定您要做什么。只需使用“trow.length := nValue;”动态地对变量进行赋值的目的是什么?你已经有右手边的价值了吗?祝你好运。