本帖最后由 gosuperhao 于 2011-11-04 21:15:13 编辑

解决方案 »

  1.   

    只要打印出来就行,为什么还要把数据插入到另一个表中呢,没必要。
    参考如下代码,记住凡是涉及到多行数据的,一定得使用光标。CREATE OR REPLACE PROCEDURE PrintStudentScore(pStudentId NUMBER) IS
    DECLARE
    -- 定义带参光标
        CURSOR curScore(ppStudentId NUMBER) IS SELECT s.sname , c.cname, g.Grade 
        FROM s JOIN g USING(sid) JOIN c USING(cid) WHERE sid = ppStudentId;
    BEGIN
    -- 光标For循环
        FOR r IN curScore
        LOOP
          DBMS_OUTPUT.PUT(r.sname);
          DBMS_OUTPUT.PUT(r.cname);
          DBMS_OUTPUT.PUT(r.grade);
          DBMS_OUTPUT.PUT_LINE();
        END LOOP;
    END PrintStudentScore;
      

  2.   

    没环境就大致的写一个吧:
    create or replace procedure my_pro1
    (param1 in number)
    as
    info_stu varchar2(10000);
    v_stuname varchar2(10);
    v_coname varchar2(10);
    v_grade number(4);
    begin
    select a,b,c into v_stuname,v_coname,v_grade  from student s,course c,grade g
    where s.stuid=g.stuid and c.couid=g.couid and g.stuid = param1;
    exception 
      when others then
         dbms_output.put_line('no data');
    dbms_output.put_line(v_stunam||v_coname||v_grade);
    end;大致语法是这样的,而不是你的insert into ...找找资料把,这方面的文档很多的.