create or replace procedure des_update(
   goodid in varchar2(20))  as
   
   goods_name  varchar2(80);
   goods_specs varchar2(80);  
begin
   select goods_enname into goods_name from goods_dict when goods_id= goodid;
   select specs into goods_specs from goods_dict when goods_id= goodid;
   update contract_detail set description= goods_name+ goods_specs  when goods_id= goodid;
end des_update;
/
请高手指点一下。

解决方案 »

  1.   

    1、in varchar2(20)  --错误,不要指定宽度
    2、as后要一个declare  
    3、保证select goods_enname into goods_name from goods_dict when goods_id= goodid;
       select specs into goods_specs from goods_dict when goods_id= goodid;
    只有一条记录,虽然没有编译错误,如果返回多行,执行则会异常
      

  2.   

    as后要一个declare  这是什么意思?as 后面不是跟变量名吗?记录是唯一的,goods_id唯一。还有,我要在goods_name+ goods_specs中间  加个 / 怎么加?
      

  3.   

    create or replace procedure des_update(
       goodid in varchar2)  
    as
       goods_name  varchar2(80);
       goods_specs varchar2(80);  
    begin
       select goods_enname into goods_name from goods_dict when goods_id= goodid;
       select specs into goods_specs from goods_dict when goods_id= goodid;
       update contract_detail set description= 
    goods_name ||'/'|| goods_specs   --如果是字符型可以用||合并  
    when goods_id= goodid;
    end des_update;
    ------------------
    对了那个declare可以不要
      

  4.   

    create or replace procedure des_update(
       goodid in varchar2)  
    as
       goods_name  varchar2(80);
       goods_specs varchar2(80);  
    begin
       select goods_enname into goods_name from goods_dict when goods_id= goodid;
       select specs into goods_specs from goods_dict when goods_id= goodid;
       update contract_detail set description= goods_name||'/'||goods_specs  when goods_id= goodid;
    end des_update;
    还是编译错误吗!!!!有调试工具吗?不知道错哪里啊!!!!
      

  5.   

    select goods_enname into goods_name from goods_dict when goods_id= goodid;
    ....
    你语句里面的when是什么?
    应该是where吧
    show err查看错误信息
      

  6.   

    o,如梦初醒,,,,,,,,,真他吗SB了