SQL> create or replace procedure student_info1
  2  (xm in char,cname in char)
  3  as
  4  begin
  5  select a.xh,xm,kcm,cj,xf
  6  from xs a inner join xs_kc b
  7  on a.xh=b.xh inner join kc t
  8  on b.kch=t.kch
  9  where
 10  a.xm=xm and t.kcm=cname;
 11  end;
 12  /警告: 创建的过程带有编译错误。
为什么OEM中提示: 错误文本= PLS-00428: 在此 SELECT 语句中缺少 INTO 子句

解决方案 »

  1.   

    存储过程里面不支持这种直接查询的写法,
    这是SQL server 的用法,oracle不行
      

  2.   

    1、定义变量 (类型和长度需根据你的定义);以下是例子
    v_xh char(10):='';
    v_xm char(10):='';
    v_kcm char(20):='';
    v_cj  char(20): ='';
    v_xf  char(30):='';2、修改select 语句
      create   or   replace   procedure   student_info1 
        2     as 
        4     begin 
        5     select   a.xh,xm,kcm,cj,xf 
        6     from   xs   a   inner   join   xs_kc   b 
        7     on   a.xh=b.xh   inner   join   kc   t 
        8     on   b.kch=t.kch 
        9     where 
      10     a.xm=xm   and   t.kcm=cname
    insert into v_xh,v_xm,v_kcm,v_cj,v_xf
     
      11     end; 重新编译即可
      

  3.   

    同意1楼和2楼的说法。
    v_xh char(10):='';
    v_xm char(10):='';
    v_kcm char(10):='';
    v_cj char(10):='';
    v_xf char(10):='';
    begin
    select a.xh,xm,kcm,cj,xf into v_xh,v_xm,v_kcm,v_cj,v_xf
    from xs a inner join xs_kc b
    on a.xh=b.xh inner join kc t
    on b.kch=t.kch
    where
    a.xm=xm;
    dbms_output.put_line(v_xh||v_xm);
    end;
    运行成功。