我再pl/sql中创建存储过程,语法如下:
创建:
create or replace procedure proc_add
(
@uno  number,
@uname varchar2(20),
@upwd varchar2(20)
)
as
begin
  insert into user_info
  values
    (@uno, @uname, @upwd);
end;
执行:
exec proc_add @uno='1',@uname='2',@upwd='3'
创建时没错误,执行时却报无效的SQL语句
打开procedure栏发行这个存储过程上有个错误叉请高手们解决下
 谢谢!!!!!!!!

解决方案 »

  1.   

    错误:
    1、去掉@
    2、传参数的时候不要写长度
    正确的写法:
    create or replace procedure proc_add
    (
    uno number,
    uname varchar2,
    upwd varchar2
    )
    as
    begin
      insert into user_info
      values
      (uno, uname, upwd);
    end;
    ----------
    你的创建的时候肯定出错了
      

  2.   

    执行语句时,参数前要带名称吗?我记得好像不用吧.就这样:
    exec proc_add 1,2,3;
      

  3.   

    同意楼上的说法,
    还有就是你的执行 存储过程的时候出现错误了exec proc_add @uno='1',@uname='2',@upwd='3'   --这个写法是错误的
    应该是这样写的 exec proc_add (1,'2','3');
      

  4.   

    还有四楼的,你是不是忘了   commit了啊
      

  5.   

    去掉@
    Oracle中变量定义不用@符号,楼主是从SQLServer转过来的吧?
      

  6.   

    我去掉了'@'符号,现在创建没问题了,可是执行的时候还是报错:无效的sql语句!!执行方法:
    exec proc_add (1,'2','3');  ????/??
      

  7.   

    begin  pro_errortable(id => 10,
                     username => 'tmep',
                     upassword => 'tmp');
    end;
    之前的那种写法是在cmd中进行的,
    你要是在PL/SQL中执行的话,使用现在的这个吧。