PLS-00103:在期望以下之一时遇到符号“”
PLS-00103: Encountered the symbol " " when expecting one of the following
出于某种原因,这不起作用。我已经把它归结为最基本的操作来尝试和排除故障。
BEGIN
FOR rec IN (
select REGISTRATION_UID from DIM_REGISTRATION_SET
)
LOOP
dbms_output.put_line('Testing 123');
END LOOP;
end;
/
我的错误如下:
Error starting at line 1 in command:
BEGIN
FOR rec IN (
select REGISTRATION_UID from DIM_REGISTRATION_SET
)
LOOP
dbms_output.put_line('Testing 123');
END LOOP;
end;
Error report:
ORA-06550: line 4, column 6:
PLS-00103: Encountered the symbol " " when expecting one of the following:
loop
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
您的代码中似乎有意想不到的字符。如果您复制并粘贴此问题的渲染输出,那么它运行良好。如果您复制问题源代码(从编辑对话框中),则会出现该错误。
转储代码(再次从源代码复制,而不是渲染)显示:
select dump('(
select REGISTRATION_UID from DIM_REGISTRATION_SET
) ', 16)
from dual;
DUMP('(SELECTREGISTRATION_UIDFROMDIM_REGISTRATION_SET) ',16)
--------------------------------------------------------------------------------
Typ=96 Len=73: 28,a,20,20,20,20,20,20,20,20,20,20,73,65,6c,65,63,74,20,52,45,47,
49,53,54,52,41,54,49,4f,4e,5f,55,49,44,20,66,72,6f,6d,20,44,49,4d,5f,52,45,47,49
,53,54,52,41,54,49,4f,4e,5f,53,45,54,a,20,20,20,20,20,20,20,20,29,c2,a0
所以右括号后的 space 实际上不是 space,它是 Unicode 字符 c2a0,which is a non-breaking space.
错误消息也显示了这一点,如果你转储:
select dump ('Encountered the symbol " "', 16) from dual;
DUMP('ENCOUNTEREDTHESYMBOL" "',16)
--------------------------------------------------------------------------------
Typ=96 Len=27: 45,6e,63,6f,75,6e,74,65,72,65,64,20,74,68,65,20,73,79,6d,62,6f,6c
,20,22,c2,a0,22
我猜你是从某个地方(Word?)复制了那个代码,它选择了那个字符,但它还没有被翻译成正常的 space。只需用 space 替换它,或者删除它,因为它是多余的白色 space 无论如何。
其实还有几个;两个在 LOOP
行的开头(后跟两个正常的 spaces),两个紧接在 END LOOP;
之前(前面有两个正常的 spaces),一个在 END LOOP;
之后该声明;所以这些也都需要更换。 (我很想重新输入整个内容,但这对于您的完整代码可能不切实际)。
出于某种原因,这不起作用。我已经把它归结为最基本的操作来尝试和排除故障。
BEGIN
FOR rec IN (
select REGISTRATION_UID from DIM_REGISTRATION_SET
)
LOOP
dbms_output.put_line('Testing 123');
END LOOP;
end;
/
我的错误如下:
Error starting at line 1 in command:
BEGIN
FOR rec IN (
select REGISTRATION_UID from DIM_REGISTRATION_SET
)
LOOP
dbms_output.put_line('Testing 123');
END LOOP;
end;
Error report:
ORA-06550: line 4, column 6:
PLS-00103: Encountered the symbol " " when expecting one of the following:
loop
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
您的代码中似乎有意想不到的字符。如果您复制并粘贴此问题的渲染输出,那么它运行良好。如果您复制问题源代码(从编辑对话框中),则会出现该错误。
转储代码(再次从源代码复制,而不是渲染)显示:
select dump('(
select REGISTRATION_UID from DIM_REGISTRATION_SET
) ', 16)
from dual;
DUMP('(SELECTREGISTRATION_UIDFROMDIM_REGISTRATION_SET) ',16)
--------------------------------------------------------------------------------
Typ=96 Len=73: 28,a,20,20,20,20,20,20,20,20,20,20,73,65,6c,65,63,74,20,52,45,47,
49,53,54,52,41,54,49,4f,4e,5f,55,49,44,20,66,72,6f,6d,20,44,49,4d,5f,52,45,47,49
,53,54,52,41,54,49,4f,4e,5f,53,45,54,a,20,20,20,20,20,20,20,20,29,c2,a0
所以右括号后的 space 实际上不是 space,它是 Unicode 字符 c2a0,which is a non-breaking space.
错误消息也显示了这一点,如果你转储:
select dump ('Encountered the symbol " "', 16) from dual;
DUMP('ENCOUNTEREDTHESYMBOL" "',16)
--------------------------------------------------------------------------------
Typ=96 Len=27: 45,6e,63,6f,75,6e,74,65,72,65,64,20,74,68,65,20,73,79,6d,62,6f,6c
,20,22,c2,a0,22
我猜你是从某个地方(Word?)复制了那个代码,它选择了那个字符,但它还没有被翻译成正常的 space。只需用 space 替换它,或者删除它,因为它是多余的白色 space 无论如何。
其实还有几个;两个在 LOOP
行的开头(后跟两个正常的 spaces),两个紧接在 END LOOP;
之前(前面有两个正常的 spaces),一个在 END LOOP;
之后该声明;所以这些也都需要更换。 (我很想重新输入整个内容,但这对于您的完整代码可能不切实际)。