ORA-00911:sqlfiddle中的无效字符

时间:2014-09-09 06:52:56

标签: sql oracle plsql

我正在尝试构建一个如下所示的SQL Schema

CREATE TABLE Persons3
(
City varchar2(255)
);


CREATE PROCEDURE myProc
BEGIN
Select 2 from dual ;
END//

http://sqlfiddle.com/#!4

我收到架构创建失败:ORA-00911:无效字符

请问任何正文可以解释那个sql小提琴中的无效吗?

2 个答案:

答案 0 :(得分:4)

你有不同的终结者。如果您已将终结符设置为//,那么您必须将其用于所有语句。您的第一个语句CREATE TABLE目前由;终止,由于语句终止符设置,该字符无效。

无论如何,您的程序无效 - 它正如其他人所说的那样遗漏了into,并且在END之后也缺少分号。这可能听起来令人困惑,但即使语句分隔符是其他内容,PL / SQL上下文(在该单个语句中)中的分号也会保留。

CREATE TABLE Persons3
(
City varchar2(255)
)
//


CREATE PROCEDURE myProc AS
  x number;
BEGIN
  select 2 into x from dual;
END;
//

SQL Fiddle

使用单个/对于Oracle来说更常见,但同样适用 - 无论您选择哪个分隔符,都必须一致地应用它。

答案 1 :(得分:1)

您的程序调用错误。您总是必须在PL / SQL中选择into。你的程序结束也有点奇怪:

create procedure myProc
as
  v pls_integer;
begin
  select 2
  into   v
  from   dual
  ;
end;