【发布时间】:2012-12-12 11:04:32
【问题描述】:
这是我的代码:
CREATE OR REPLACE PROCEDURE UPDATE_USER
(
updateColumn IN USERS.column_name%type,
changeStr IN VARCHAR2,
unID IN VARCHAR2
)
IS
BEGIN
EXECUTE IMMEDIATE
'UPDATE
users
SET :1 = :2
WHERE
uniqueID = :3'
USING updateColumn, changeStr, unID;
END;
/
我已经为此搜索了其他答案,据我所知这应该可行。但是我得到了错误: '错误(3,25):PLS-00302:必须声明组件'COLUMN_NAME''
谢谢。
【问题讨论】:
-
您的
USERS表是否真的有一个名为column_name的列?这似乎不是你想要做的。您可能需要将updateColumn声明为user_tab_columns.colmn_name%type,或简单的varchar2。但是,您不能使用绑定变量在更新中动态设置列名。 -
@AlexPoole 这个答案就是我的目标:this question