想创建一个简单的过程,老室不成功
以s用户登陆sql*plus worksheet
s已经有了create any procedure的权限,并有了访问s1.t1的权限
create or replace procedure ttt as
begin
select * from s1.t1;
end
警告: 创建的过程带有编译错误
show err
4/3      PLS-00103: 出现符号 "end-of-file"在需要下列之一时:
         ; <an identifier>
         <a double-quoted delimited-identifier> delete exists prior
         <a single-quoted SQL string>
         符号 ";" 被替换为 "end-of-file" 后继续。以s用户登陆sql*plus worksheet
t2为s的表
create or replace procedure dd as
begin
select * from t2;
end;
警告: 创建的过程带有编译错误
show err3/1      PLS-00428: 在此 SELECT 语句中缺少 INTO 子句为什么会这样啊,以前用sql server时,写存储过程很简单啊

解决方案 »

  1.   

    你需要定义个游标保存你查询的值,举例如下 :
    create or replace procedure ttt as
    begin
    for x in (select * from s1.t1) loop -- x 是隐式游标 
       null; --这儿添加你要处理所查询的数据
    end loop;
    end;
    /
      

  2.   

    create or replace procedure aaaaa as
        --v_o baihe%rowtype;
     begin
        select
                *
     into v_o
            from
                baihe
            where newmajor=65;
        dbms_output.put_line(v_o.newmajor);
     end aaaaa;
    /
      

  3.   

    返回结果集 需要用 ref cursor。