这个简单的块有啥问题? PL SQL
Posted
技术标签:
【中文标题】这个简单的块有啥问题? PL SQL【英文标题】:What's wrong with this simple block? PL SQL这个简单的块有什么问题? PL SQL 【发布时间】:2020-01-09 09:50:39 【问题描述】:我正在尝试在 TOAD 上运行这个简单的匿名块,但出现以下错误。有人能帮我吗?
代码如下:
BEGIN
FOR REC_CONF IN
(
SELECT DISTINCT CONF.SCHEMA, CONF.TABELLA, CONF.CAMPO, CONF.TIPO_CAMPO, CONF.LUNG_CAMPO,
CONF.CAMPO_ACCESSO
FROM EDWH.EDWH_GDPR_CONFIG CONF
WHERE UPPER(FLAG_CANC) = 'Y'
AND UPPER(SCHEMA) = UPPER('EDWH')
ORDER BY CONF.TABELLA, CONF.CAMPO ASC
)
LOOP
DBMS_OUTPUT.PUT_LINE (REC_CONF.TABELLA);
END LOOP;
END;
这应该循环到 EDWH.EDWH_GDPR_CONFIG 并将属性打印到 dbms_output.put_line。
这是我得到的错误:
[Error] Execution (10: 8): ORA-06550: row 10, column 8:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the following:
( begin case declare exit for goto if loop mod null pragma
raise return select update while with <an identifier>
<identifier between quotes>
<a bind variable> << continue close current delete fetch
lock insert open rollback savepoint set sql execute commit
forall merge pipe purge)
【问题讨论】:
除了下面的答案(请不要忘记将相关答案标记为正确!),首选项中可能还有一个选项可以将空行视为终止符,您可以禁用它并然后“执行”将按预期运行它。 (根据this answer on the toadworld forum,虽然这是指12.9;我很确定这个选项在早期版本中可用)。或者你可以从你的程序中删除空白行。 这也是一个很好的解决方案。我刚刚做到了。致其他用户:在执行/编译页面的 Toad 选项中禁用“将空行视为语句终止符”。 【参考方案1】:我相信您以错误的方式运行脚本。它是一个 PL/SQL 脚本,因此可以通过按 F9 键或按 TOAD 工具栏中的“作为脚本执行”按钮来运行它。
如果光标位于此代码中的某个位置(例如,在BEGIN
上)并且您按下了<Ctrl + Enter>
,那么您将得到
ORA-06550:第 12 行,第 4 列: PLS-00103:在预期以下情况之一时遇到符号“文件结尾”: (开始 case 声明退出 goto if loop mod null pragma 在使用时提高返回选择更新
所以 - 将它作为 脚本 运行。
【讨论】:
嗯...你是对的。不知道为什么我用尝试在最后一个“END;”之后添加'/'
END LOOP;
END;
/
然后再次执行
【讨论】:
没什么不同:/以上是关于这个简单的块有啥问题? PL SQL的主要内容,如果未能解决你的问题,请参考以下文章