任何人都可以帮忙解决这个问题。我正在尝试使用与按钮关联的动态操作在APEX中执行此代码。只是尝试在表上进行简单的更新,但我的Pl / SQL很弱;)
DECLARE
sql_stmt VARCHAR2(200);
BEGIN
EXECUTE IMMEDIATE sql_stmt :=
'update dos_visits set visit_type = 'IMV'where visit_type = 'SMV''
END;
我收到的错误=为此..
非常感谢!
答案 0 :(得分:1)
在PL / SQL中,需要对字符串中的单引号进行转义,以便PL / SQL引擎知道您要指示是否存在单个引号而不是结束字符串。如果您想使用变量sql_stmt
,您还需要在EXECUTE IMMEDIATE
调用的单独步骤中为该变量指定值。
这将有效(请注意,这些是两个连续的单引号,而不是一个双引号字符)
DECLARE
sql_stmt VARCHAR2(200);
BEGIN
sql_stmt := 'update dos_visits set visit_type = ''IMV'' where visit_type = ''SMV''';
EXECUTE IMMEDIATE sql_stmt;
END;
但是,没有任何理由在这里使用动态SQL。使用静态SQL
通常更有意义BEGIN
update dos_visits
set visit_type = 'IMV'
where visit_type = 'SMV';
END;
如果您出于某种原因要使用动态SQL,您可能希望在查询中使用绑定变量,除非那些visit_type
值确实是硬编码的。
DECLARE
sql_stmt VARCHAR2(200);
BEGIN
sql_stmt := 'update dos_visits set visit_type = :1 where visit_type = :2';
EXECUTE IMMEDIATE sql_stmt
USING 'IMV', 'SMV';
END;