试图声明一个游标,但我被文件结尾击中了! (甲骨文 SQL)
Posted
技术标签:
【中文标题】试图声明一个游标,但我被文件结尾击中了! (甲骨文 SQL)【英文标题】:Trying to declare a cursor, but I'm getting hit with end of file! (Oracle SQL) 【发布时间】:2020-07-10 21:16:16 【问题描述】:我目前正在学习 Oracle SQL,我现在正在使用游标。我知道这是一个小问题,而且可能很容易解决,但是我的声明语句正在拉出文件结尾错误。 (PLS-00103)
声明如下:
declare cursor CustCursor is select * from Customers where cust_email is null;
任何帮助都将不胜感激,也值得知道我遵循了 Sams Teach Yourself SQL Book 并且仍然遇到这些问题。
谢谢!
【问题讨论】:
【参考方案1】:DECLARE
不能在宇宙中单独存在 - 它是 PL/SQL 块的一部分,它也至少需要 dummy BEGIN-END
的一部分.
这就是你所拥有的:
SQL> declare cursor CustCursor is select * from Customers where cust_email is null;
2 /
declare cursor CustCursor is select * from Customers where cust_email is null;
*
ERROR at line 1:
ORA-06550: line 1, column 78:
PLS-00103: Encountered the symbol "end-of-file" when expecting one of the
following:
begin function pragma procedure subtype type <an identifier>
<a double-quoted delimited-identifier> current cursor delete
exists prior
这是您应该拥有的:
SQL> declare cursor CustCursor is select * from Customers where cust_email is null;
2 begin
3 null;
4 end;
5 /
PL/SQL procedure successfully completed.
SQL>
或者,正如 Ed Stevens 所说,把所有东西放在它所属的地方(尽管结果是一样的):
SQL> declare
2 cursor CustCursor is select * from Customers where cust_email is null;
3 begin
4 null;
5 end;
6 /
PL/SQL procedure successfully completed.
SQL>
【讨论】:
为了更清楚什么是什么,我将“光标是...”放在一行中,将 DECLARE 保留在自己的一行中。更清楚地说明(希望如此!) CURSOR 是它自己的词汇元素。 . . 我的意图是表明“原始”陈述实际上是正确的 - 如果放入正确的环境,@EdS。但是,是的,我同意你的看法,所以我也发布了一个 prettier 示例。感谢您的评论!以上是关于试图声明一个游标,但我被文件结尾击中了! (甲骨文 SQL)的主要内容,如果未能解决你的问题,请参考以下文章
我试图捕捉刷卡的输入,但我被困在使用 C# Windows 窗体