来个大神教我写存储过程,还有一些逻辑。

解决方案 »

  1.   

    create or replace procedure p_hello(i_name   in nvarchar2,
                                        o_result out nvarchar2) is
    begin
      o_result := 'Hello' || ';' || i_name;
    end p_hello;
      

  2.   

    CREATE OR REPLACE PROCEDURE CHANGE_MONEY(ADDMONEY IN NUMBER) IS
      CURSOR CUR IS
        SELECT * FROM MONEY;
      C_ROW MONEY%ROWTYPE;
    BEGIN
      OPEN CUR;
      FETCH CUR    INTO C_ROW;
      WHILE CUR%FOUND LOOP
        IF C_ROW.MONTH < 3 THEN
          UPDATE MONEY
             SET MONEY.MONEY =
                 (C_ROW.MONEY + ADDMONEY);
        END IF;
        FETCH CUR      INTO C_ROW;
      END LOOP;
      CLOSE CUR;
      COMMIT;
    END CHANGE_MONEY;
     说明:
    (1)       这里需要定义一个游标,还要定义一个emp%rowtype类型的变量,%前面是表名,后面表示这个表的一行,
    (2)       在使用游标前还要显示的打开游标,并将其赋值到row中,使用后关闭游标。
    (3)       C%found表示只有row中有值的时候才会进行循环。
    (4)       经过对比发现于while循环相比,for循环更像是C#中的foreach,使用起来方便很多。
    (5) fetch into把当前游标提取的值赋值给变量