为什么它不起作用? 我在oracle中运行它。 我想创建一个类似的程序:
CREATE OR REPLACE PROCEDURE ME( X in NUMBER )IS
declare
num1 number;
BEGIN
num1:=1;
insert into a (year) values(7);
END;
这是错误:
PLS-00103:遇到以下任何一种情况时遇到符号“DECLARE”: 开始函数编译指示程序子类型 当前游标删除 存在先前的外部语言 符号“begin”代替“DECLARE”继续。 7/5 PLS-00103:遇到以下某种情况时遇到符号“文件结束”: (如果循环mod,则开始为goto声明结束异常退出 null pragma raise返回选择更新时使用 <<继续关闭当前删除获取锁定 insert open rollback savepoint set sql execute commit forall 合并管道清除
答案 0 :(得分:4)
DECLARE
仅用于匿名PL / SQL块和嵌套PL / SQL块。当你宣布一个程序时,你不会使用它。假设表A
存在列YEAR
,类似
CREATE OR REPLACE PROCEDURE ME( X in NUMBER )
IS
num1 number;
BEGIN
num1:=1;
insert into a (year) values(7);
END;
在语法上是有效的。当然,代码有各种各样的问题...你拿一个你不使用的参数,你声明一个你不使用的局部变量,程序的名称与程序无关等等。
答案 1 :(得分:1)
尝试
CREATE OR REPLACE PROCEDURE me (x IN NUMBER)
IS
num1 NUMBER;
BEGIN
num1 := 1;
insert into a (year) values(7);
END;
/