zoukankan      html  css  js  c++  java
  • 存储过程及函数初探

    pl/sql   procedures 

    new  新建

    F8 

    Ctrl + s  保存

    refresh  刷新

    test 测试

    dbms_output.put_line('Test script | DBMS Output | ...');

    IF SQL%ROWCOUNT = 1 THEN

    XXX

    ELSE

    XXX

    END IF;

    以上片段 管中窥豹可见一斑

    命名规范

    CREATE OR REPLACE PROCEDURE P_XX_TT(PARM1 IN VARCHAR2, RESULT OUT INTEGER) IS
      V_XX_NAME VARCHAR2(10) DEFAULT '1234567890';
    BEGIN
      INSERT INTO ZXG
        (A, B)
        SELECT C.* FROM ZXG C;
      RESULT := SQL%ROWCOUNT;
      IF RESULT = 1 THEN
        DBMS_OUTPUT.PUT_LINE(RESULT);
        DBMS_OUTPUT.PUT_LINE('插日志 成功');
        COMMIT;
        --插日志 成功
      ELSE
        DBMS_OUTPUT.PUT_LINE(RESULT);
        DBMS_OUTPUT.PUT_LINE('插日志 失败| sdf | ..');
        ROLLBACK;
        RESULT := 0;
        --插日志 失败
      END IF;
    EXCEPTION
      WHEN OTHERS THEN
        --插入数据时产生异常
        DBMS_OUTPUT.PUT_LINE(SQLCODE || SQLERRM);
        ROLLBACK;
        RESULT := 0;
    END P_XX_TT;
    -- 更新
    DECLARE
      A ZXG.A%TYPE;
      B VARCHAR2(10);
      CURSOR C IS
        SELECT DISTINCT A, B FROM ZXG WHERE A IS NOT NULL;
    
    BEGIN
      OPEN C;
      FETCH C
        INTO A, B;
      WHILE C%FOUND LOOP
        UPDATE ZXG T SET T.A = B WHERE T.B = B;
        FETCH C
          INTO A, B;
      END LOOP;
      CLOSE C;
    END;
    -- 查看用sql 
    -- SELECT  * FROM zxg for update

    函数

    CREATE OR REPLACE
    
    FUNCTION mylog(v_type IN VARCHAR2, v_content IN VARCHAR2)
    
     RETURN NUMBER
    
     AS
    
    BEGIN
    
      insert into lxzb_log
      values
        (seq_log.nextval, v_type, v_content, sysdate);
    
      RETURN SQL%ROWCOUNT;
    
    END;

    注意:

    1.函数名不要使用关键字,比如 log ,会有莫名其妙的错误

    2. 如果函数中不包含 insert 等,可以通过 select 你的函数 from dual; 测试。否则通过 pl/sql test 测试

    3. 在存储过程中调用时 需要 v_var := yourfunction(param1,..) ,孤零零写一个 yourfunction(param1,...) 不好用

  • 相关阅读:
    BZOJ3578:GTY的人类基因组计划2(集合hash,STL)
    【BZOJ 1022】 [SHOI2008]小约翰的游戏John
    【BZOJ 1295】 [SCOI2009]最长距离
    【BZOJ 1103】 [POI2007]大都市meg
    【BZOJ 3172】 [Tjoi2013]单词
    【BZOJ 1067】 [SCOI2007]降雨量
    【BZOJ 1491】 [NOI2007]社交网络
    【BZOJ 1087】[SCOI2005]互不侵犯King
    【BZOJ 1009】 [HNOI2008]GT考试
    【BZOJ 1053】[HAOI2007]反素数ant
  • 原文地址:https://www.cnblogs.com/zno2/p/4538258.html
Copyright © 2011-2022 走看看