本帖最后由 shper87298 于 2011-11-24 15:11:01 编辑

解决方案 »

  1.   

    为什么要写存储过程呢?
    SQL语句就可以实现吧。
      

  2.   


    --merge into 一个sql解决,为啥用存储过程。
    MERGE INTO TEST a
    USING student b
       ON(a.name = b.name1)
     WHEN MATCHED THEN
       UPDATE SET a.oid = b.id;
      

  3.   

    现在就是不能用SQL语句,希望能用存储过程弄出来呢。= =。现在是只能update了第一条数据,第二条没变。求指导·
      

  4.   

    procedure df_id is
        cursor cur is select *
                        from test t;     cur_result  test%rowtype;
        v_subg3efid  number;
      begin 
      
        for cur_result in cur loop
           
            select id
                into v_subid   
                from student
               where rownum = 1
                 and name1 = cur_result.name;
       
              update test t
                 set t.oid = v_subid
               where t.name1 = cur_result.name;   end loop;
       commit;
      end df_id ;
    这是最新的。 跪求指导呀·
      

  5.   

    where rownum = 1   为什么加这个?
      

  6.   

    感觉跟我学的不一样啊!
    --存储过程,存储相片
    IF EXISTS (SELECT * FROM sysobjects WHERE NAME = 'proc_Insertphoto' )
    DROP PROCEDURE proc_Insertphoto
    GOCREATE PROCEDURE proc_Insertphoto  @Name varchar(20), --相片名字
    @Img image ,       --相片
    @Time datetime ,--插入时间
    @Sm varchar(50),--说明
    @Picid int --所属相册编号(外键)
    AS
    INSERT INTO photoInfo VALUES(@Name,@Img ,@Time,@Sm,@Picid)
    GO
      

  7.   

    第二条记录报异常了应该。CREATE OR PROCEDURE DF_ID IS
      V_SUBG3EFID NUMBER;
      CURSOR CUR IS(
        SELECT NAME FROM TEST T);
    BEGIN
      FOR CUR_RESULT IN CUR LOOP
        BEGIN
          SELECT ID
            INTO V_SUBID
            FROM STUDENT
           WHERE ROWNUM = 1
             AND NAME1 = CUR_RESULT.NAME;
        EXCEPTION
          WHEN NO_DATA_FOUND THEN
            NULL;
        END;
        UPDATE TEST T SET T.OID = V_SUBID WHERE T.NAME1 = CUR_RESULT.NAME;
      
      END LOOP;
      COMMIT;
    END DF_ID;
      

  8.   


    --或者
    CREATE OR PROCEDURE DF_ID IS
      V_SUBG3EFID NUMBER;
      CURSOR CUR IS(
        SELECT NAME FROM TEST T);
    BEGIN
      FOR CUR_RESULT IN CUR LOOP
        BEGIN
          SELECT ID
            INTO V_SUBID
            FROM STUDENT
           WHERE ROWNUM = 1
             AND NAME1 = CUR_RESULT.NAME;
        EXCEPTION
          WHEN NO_DATA_FOUND THEN
            GO TO LABLE1;
        END;
        UPDATE TEST T SET T.OID = V_SUBID WHERE T.NAME1 = CUR_RESULT.NAME;
        <<LABLE1>>
      END LOOP;
      COMMIT;
    END DF_ID;