我正在尝试使用匿名块进行两次更新,但是它对我不起作用。 我在做什么错了?
DECLARE
v_voucher NUMBER(10) := 4329;
BEGIN
UPDATE PRODUCTION
SET
UND_PROD = 0,
UND_DET = 0
WHERE
VOUCHER = v_voucher;
UPDATE DET_PRODUCTION
SET
UND_GOOD = 0,
UND_BAD = 0
WHERE
VOUCHER = v_voucher;
END;
ORA-06550:第9行,第1列: PLS-00103:预期以下情况之一时遇到符号“”:
(起始情况为go mod if loop mod声明结束异常退出 null编译指示加 [标识符] [双引号分隔标识符] [绑定变量]继续关闭当前删除删除锁 插入打开回滚保存点集sql执行commit forall 合并管道清除
答案 0 :(得分:4)
这样的代码没有任何问题,但是您似乎有一个导致问题的隐藏字符。
如果我从编辑窗口中复制代码并转储第二行中有C2A0
之前的行中的内容。
select dump (' WHERE VOUCHER = v_voucher;
UPDATE DET_PRODUCTION SET
', 1016) from dual;
DUMP('WHEREVOUCHER=V_VOUCHER; UPDATEDET_PRODUCTIONSET',1016)
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Typ=96 Len=60 CharacterSet=AL32UTF8: 9,57,48,45,52,45,20,56,4f,55,43,48,45,52,20,3d,20,76,5f,76,6f,75,63,68,65,72,3b,a,9,c2,a0,a,9,55,50,44,41,54,45,20,44,45,54,5f,50,52,4f,44,55,43,54,49,4f,4e,20,53,45,54,20,a
^^^^^
解决此问题的最简单方法可能是,在第一次更新后,直到第二次更新之前,从分号中选择所有文本,然后将其删除-用一两个新换行符替换。
或者从问题中复制渲染的代码块并运行该代码-将原始代码(只能通过编辑才能看到)作为Markdown处理后,流氓字符就不成问题了。
不确定这是哪里来的;也许您是在Word之类的外部程序中编写的,并添加了特殊字符,因为它有这样做的习惯...