在oracle中创建过程

时间:2013-05-30 07:17:33

标签: sql oracle oracle11g procedure

为什么它不起作用? 我在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           合并管道清除

2 个答案:

答案 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;
/