无法在 Oracle SQL(SQL Fiddle)中声明变量
Posted
技术标签:
【中文标题】无法在 Oracle SQL(SQL Fiddle)中声明变量【英文标题】:Can't declare a variable in Oracle SQL(SQL Fiddle) 【发布时间】:2020-09-13 18:15:12 【问题描述】:当我运行声明查询时,它总是给我错误。
DECLARE
the_variable date;
BEGIN
SELECT MIN("Start Date") INTO the_variable FROM "Employee_Master";
END;
ORA-06550:第 2 行,第 20 列:PLS-00103:遇到符号 预期以下之一时的“文件结尾”: := 。 ( @ % ; 不是 具有默认字符的空范围。
我不确定问题出在哪里。
【问题讨论】:
看起来 SQLFiddle 不支持 PL/SQL。即使在简单的begin null; end;
上也会失败
呵呵,但是如果我在下一行添加/
就可以了
如果我将所有 pl/sql 块放在一个块中,它就可以工作,即:declare dt date; begin dt:=date'2020-01-01'; end;
和 /
在下一行
【参考方案1】:
对我来说没问题:
SQL> create table "Employee_Master" ("Start Date" date);
Table created.
SQL> insert into "Employee_Master" values (sysdate);
1 row created.
SQL> declare
2 the_variable date;
3 begin
4 select min("Start Date") into the_variable
5 from "Employee_Master";
6 end;
7 /
PL/SQL procedure successfully completed.
SQL>
虽然,为什么,哦,你为什么要让你的生活变得悲惨?使用 Oracle 时避免使用双引号。如果你这样做,你总是必须在创建过程中使用双引号和匹配的字母大小写来引用表(和列)完全正确。
默认情况下,Oracle 将 所有内容 存储为大写,但您可以以任何您想要的方式引用这些对象(大写、小写、混合大小写 - 无关紧要)。但是,正如我所说,使用双引号 - 需要完全匹配。
顺便说一句,您附上的屏幕截图显示了很多什么都没有,只有一点点有什么。不能截个更好的截图吗?
【讨论】:
感谢您的回复。抱歉截图,我删除了它。 col 名称已经固定,并且其中有一个空格,所以我不得不使用双引号。我正在使用 SQL Fiddle oracle,但它总是给我错误。 sqlfiddle.com/#!4【参考方案2】:在 SQL Fiddle 网站上,您需要告诉它您将使用 PL/SQL,并且语句将以 /
终止符(而不是 ;
分号)结束。为此,您需要单击“查询终止符”按钮(“运行 SQL”和“编辑全屏”按钮的右侧)并将其从 [;]
更改为 [/]
.
然后就可以了:
SQL Fiddle
Oracle 11g R2 架构设置:
CREATE TABLE Employee_Master ( Start_Date DATE );
INSERT INTO Employee_Master ( Start_Date ) VALUES ( SYSDATE );
查询 1:
DECLARE
the_variable date;
BEGIN
SELECT MIN(Start_Date) INTO the_variable FROM Employee_Master;
END;
/
Results:
【讨论】:
以上是关于无法在 Oracle SQL(SQL Fiddle)中声明变量的主要内容,如果未能解决你的问题,请参考以下文章