我正在尝试构建一个如下所示的SQL Schema
CREATE TABLE Persons3
(
City varchar2(255)
);
CREATE PROCEDURE myProc
BEGIN
Select 2 from dual ;
END//
我收到架构创建失败:ORA-00911:无效字符
请问任何正文可以解释那个sql小提琴中的无效吗?
答案 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;
//
使用单个/
对于Oracle来说更常见,但同样适用 - 无论您选择哪个分隔符,都必须一致地应用它。
答案 1 :(得分:1)
您的程序调用错误。您总是必须在PL / SQL中选择into
。你的程序结束也有点奇怪:
create procedure myProc
as
v pls_integer;
begin
select 2
into v
from dual
;
end;