一、

  1. CREATE OR REPLACE PROCEDURE PRC_WAP_ACTIVEUSERS(RETCODE OUT VARCHAR2)
  2. /***********************************************************
  3. * 功能:WAP指标--活跃用户统计(分批提交)
  4. * 参数:RETCODE(返回编码:0000成功)
  5. * 作者:
  6. * 创建时间:2013-01-16
  7. * 版本:1.0
  8. * 修改人:
  9. * 修改时间:
  10. **********************************************************/
  11. IS
  12. RET_CODE VARCHAR2(6);                 --错误信息代码
  13. RET_MSG  VARCHAR2(200);               --错误信息
  14. V_LAST_MONTH      VARCHAR2(8);        --上个月份
  15. V_FIRST_DAY_MONTH VARCHAR2(10);       --上个月第一天
  16. V_END_DAY_MONTH   VARCHAR2(10);       --上个月第二天
  17. V_COUNT           NUMBER;             --计数变量
  18. V_COMMITNUM CONSTANT NUMBER :=1000000;--一次提交记录数(默认一百万)
  19. BEGIN
  20. --程序开始
  21. DBMS_OUTPUT.PUT_LINE('PRC_WAP_ACTIVEUSERS BEGIN : ' ||
  22. TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
  23. RET_CODE := '0000';                   --返回编码初始化
  24. V_COUNT  := 0;                        --计数器初始化
  25. --申明游标
  26. DECLARE
  27. TYPE CUR_DATA_TYPE IS RECORD        --定义动态游标数据类型
  28. (
  29. PHONE_NUM   VARCHAR2(20),         --电话号码
  30. LOGIN_TIMES VARCHAR2(2000));      --访问次数
  31. VRECORD CUR_DATA_TYPE;              --定义数据类型
  32. BEGIN
  33. SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'YYYYMM')
  34. INTO V_LAST_MONTH
  35. FROM DUAL;
  36. SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE) + 1, -2), 'YYYYMMDD')
  37. INTO V_FIRST_DAY_MONTH
  38. FROM DUAL;
  39. SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'YYYYMMDD')
  40. INTO V_END_DAY_MONTH
  41. FROM DUAL;
  42. FOR VRECORD IN (SELECT TEL AS PHONE_NUM, COUNT(T.TEL) AS LOGIN_TIMES
  43. FROM TEMP_BOSS_BIP1A021 T
  44. WHERE T.DAY_ID BETWEEN V_FIRST_DAY_MONTH AND
  45. V_END_DAY_MONTH HAVING COUNT(T.TEL) >= 2
  46. GROUP BY T.TEL) LOOP
  47. INSERT INTO T_BIP1A021
  48. (PHONE_NUM, LOGIN_TIMES, LOGIN_MONTH)
  49. VALUES
  50. (VRECORD.PHONE_NUM, VRECORD.LOGIN_TIMES, V_LAST_MONTH);
  51. IF ((MOD(V_COUNT, V_COMMITNUM)) = 0) THEN
  52. COMMIT;                         --求余:一百万提交一次
  53. END IF;
  54. V_COUNT := V_COUNT + 1;
  55. END LOOP;
  56. COMMIT;
  57. DBMS_OUTPUT.PUT_LINE('PRC_WAP_ACTIVEUSERS END: ' ||
  58. TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
  59. EXCEPTION
  60. WHEN OTHERS THEN
  61. BEGIN
  62. ROLLBACK;
  63. RET_CODE := '0001';
  64. RET_MSG  := '存储过程 PRC_WAP_ACTIVEUSERS 执行错误!' || CHR(10) ||
  65. '错误代码:' || SQLCODE || CHR(10) || '错误信息:' ||
  66. SUBSTR(SQLERRM, 1, 128);
  67. GOTO TOEND;
  68. END;
  69. END;
  70. --返回程序运作结果
  71. <<TOEND>>
  72. RETCODE := RET_CODE;
  73. IF (RET_CODE = '0000') THEN
  74. RET_MSG := '运行成功!';
  75. COMMIT;
  76. ELSE
  77. RET_MSG := '运行失败!' || RET_MSG;
  78. ROLLBACK;
  79. END IF;
  80. DBMS_OUTPUT.PUT_LINE(RET_MSG);
  81. DBMS_OUTPUT.PUT_LINE('END TIME : ' ||
  82. TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
  83. END PRC_WAP_ACTIVEUSERS;
CREATE OR REPLACE PROCEDURE PRC_WAP_ACTIVEUSERS(RETCODE OUT VARCHAR2)
/***********************************************************
* 功能:WAP指标--活跃用户统计(分批提交)
* 参数:RETCODE(返回编码:0000成功)
* 作者:
* 创建时间:2013-01-16
* 版本:1.0
* 修改人:
* 修改时间:
**********************************************************/
IS
RET_CODE VARCHAR2(6); --错误信息代码
RET_MSG VARCHAR2(200); --错误信息
V_LAST_MONTH VARCHAR2(8); --上个月份
V_FIRST_DAY_MONTH VARCHAR2(10); --上个月第一天
V_END_DAY_MONTH VARCHAR2(10); --上个月第二天
V_COUNT NUMBER; --计数变量
V_COMMITNUM CONSTANT NUMBER :=1000000;--一次提交记录数(默认一百万) BEGIN
--程序开始
DBMS_OUTPUT.PUT_LINE('PRC_WAP_ACTIVEUSERS BEGIN : ' ||
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')); RET_CODE := '0000'; --返回编码初始化
V_COUNT := 0; --计数器初始化
--申明游标
DECLARE
TYPE CUR_DATA_TYPE IS RECORD --定义动态游标数据类型
(
PHONE_NUM VARCHAR2(20), --电话号码
LOGIN_TIMES VARCHAR2(2000)); --访问次数 VRECORD CUR_DATA_TYPE; --定义数据类型
BEGIN SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'YYYYMM')
INTO V_LAST_MONTH
FROM DUAL; SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE) + 1, -2), 'YYYYMMDD')
INTO V_FIRST_DAY_MONTH
FROM DUAL; SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'YYYYMMDD')
INTO V_END_DAY_MONTH
FROM DUAL; FOR VRECORD IN (SELECT TEL AS PHONE_NUM, COUNT(T.TEL) AS LOGIN_TIMES
FROM TEMP_BOSS_BIP1A021 T
WHERE T.DAY_ID BETWEEN V_FIRST_DAY_MONTH AND
V_END_DAY_MONTH HAVING COUNT(T.TEL) >= 2
GROUP BY T.TEL) LOOP INSERT INTO T_BIP1A021
(PHONE_NUM, LOGIN_TIMES, LOGIN_MONTH)
VALUES
(VRECORD.PHONE_NUM, VRECORD.LOGIN_TIMES, V_LAST_MONTH); IF ((MOD(V_COUNT, V_COMMITNUM)) = 0) THEN
COMMIT; --求余:一百万提交一次
END IF; V_COUNT := V_COUNT + 1; END LOOP; COMMIT; DBMS_OUTPUT.PUT_LINE('PRC_WAP_ACTIVEUSERS END: ' ||
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
EXCEPTION
WHEN OTHERS THEN
BEGIN
ROLLBACK;
RET_CODE := '0001';
RET_MSG := '存储过程 PRC_WAP_ACTIVEUSERS 执行错误!' || CHR(10) ||
'错误代码:' || SQLCODE || CHR(10) || '错误信息:' ||
SUBSTR(SQLERRM, 1, 128);
GOTO TOEND;
END;
END; --返回程序运作结果
<<TOEND>>
RETCODE := RET_CODE;
IF (RET_CODE = '0000') THEN
RET_MSG := '运行成功!';
COMMIT;
ELSE
RET_MSG := '运行失败!' || RET_MSG;
ROLLBACK;
END IF; DBMS_OUTPUT.PUT_LINE(RET_MSG); DBMS_OUTPUT.PUT_LINE('END TIME : ' ||
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')); END PRC_WAP_ACTIVEUSERS;

二、

  1. CREATEORREPLACEPROCEDURE PRC_WAP_ACTIVEUSERS_BATCH(RETCODE OUT VARCHAR2,
  2. V_TABLE IN VARCHAR2)
  3. /***********************************************************
  4. * 功能:WAP指标--活跃用户统计(分批提交)                *
  5. * 参数:RETCODE(返回编码),V_TABLE(插入表)           *
  6. * 作者:ZENGMS                                           *
  7. * 创建时间:2013-01-16                                   *
  8. * 版本:1.0                                              *
  9. * 修改人:                                               *
  10. * 修改时间:                                             *
  11. **********************************************************/
  12. IS
  13. RET_CODE          VARCHAR2(6);                 --错误信息代码
  14. RET_MSG           VARCHAR2(200);               --错误信息
  15. EXEC_SQL          VARCHAR2(2000);              --SQL语句
  16. V_LAST_MONTH      VARCHAR2(8);                 --上个月份
  17. V_FIRST_DAY_MONTH VARCHAR2(10);                --上个月第一天
  18. V_END_DAY_MONTH   VARCHAR2(10);                --上个月第二天
  19. V_TOTALNUM        NUMBER;                      --总记录数
  20. V_COMMITNUM       NUMBER;                      --一次提交数量
  21. V_RUNTIME         NUMBER;                      --运行次数
  22. V_NUM             NUMBER;                      --循环变量
  23. BEGIN
  24. --程序开始
  25. DBMS_OUTPUT.PUT_LINE('PRC_WAP_ACTIVEUSERS_BATCH BEGIN : ' ||
  26. TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
  27. RET_CODE    := '0000';
  28. V_COMMITNUM := 1000000;                        --一百万提交一次
  29. BEGIN
  30. SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'YYYYMM')
  31. INTO V_LAST_MONTH
  32. FROM DUAL;
  33. SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE) + 1, -2), 'YYYYMMDD')
  34. INTO V_FIRST_DAY_MONTH
  35. FROM DUAL;
  36. SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'YYYYMMDD')
  37. INTO V_END_DAY_MONTH
  38. FROM DUAL;
  39. EXEC_SQL := 'SELECTCOUNT(1) FROM(SELECT TEL AS PHONE_NUM, COUNT(T.TEL)
  40. AS LOGIN_TIMES,''' || V_LAST_MONTH ||
  41. ''' AS LOGIN_MONTH
  42. FROM TEMP_BOSS_BIP1A021 T
  43. WHERE T.DAY_ID BETWEEN''' ||
  44. V_FIRST_DAY_MONTH || ''' AND ''' || V_END_DAY_MONTH ||
  45. ''' HAVING COUNT(T.TEL) >= 2 GROUP BY T.TEL)';
  46. EXECUTE IMMEDIATE EXEC_SQL INTO V_TOTALNUM;    --获取总记录数
  47. --计算循环次数
  48. V_RUNTIME := V_TOTALNUM MOD V_COMMITNUM;
  49. IF (V_RUNTIME > 0) THEN
  50. V_RUNTIME := 1 + TRUNC(V_TOTALNUM / V_COMMITNUM);
  51. END IF;
  52. IF (V_RUNTIME = 0) THEN
  53. V_RUNTIME := 0 + TRUNC(V_TOTALNUM / V_COMMITNUM);
  54. END IF;
  55. --分批提交数据库
  56. FOR V_NUM IN 1 .. V_RUNTIME LOOP
  57. EXEC_SQL := 'INSERT INTO ' || V_TABLE || '
  58. (PHONE_NUM, LOGIN_TIMES, LOGIN_MONTH, ROWNUMS)
  59. SELECT PHONE_NUM, LOGIN_TIMES, LOGIN_MONTH, ROWNUM AS ROWNUMS
  60. FROM (SELECT TEL AS PHONE_NUM,
  61. COUNT(T.TEL) AS LOGIN_TIMES,''' ||
  62. V_LAST_MONTH ||
  63. ''' AS LOGIN_MONTH
  64. FROM TEMP_BOSS_BIP1A021 T
  65. WHERE T.DAY_ID BETWEEN''' ||
  66. V_FIRST_DAY_MONTH || ''' AND ''' || V_END_DAY_MONTH ||
  67. ''' HAVING
  68. COUNT(T.TEL) >= 2
  69. GROUPBY T.TEL) WHERE ROWNUM>' ||
  70. (V_NUM - 1) * V_COMMITNUM || ' AND ROWNUM <=' ||
  71. V_NUM * V_COMMITNUM;
  72. EXECUTE IMMEDIATE EXEC_SQL;
  73. COMMIT; --提交
  74. END LOOP;
  75. DBMS_OUTPUT.PUT_LINE('PRC_WAP_ACTIVEUSERS_BATCH END: ' ||
  76. TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
  77. EXCEPTION
  78. WHEN OTHERS THEN
  79. BEGIN
  80. ROLLBACK;
  81. RET_CODE := '0001';
  82. RET_MSG  := '存储过程PRC_WAP_ACTIVEUSERS_BATCH执行错误!' || CHR(10) ||
  83. '错误代码:' || SQLCODE || CHR(10) || '错误信息:' ||
  84. SUBSTR(SQLERRM, 1, 128);
  85. GOTO TOEND;
  86. END;
  87. END;
  88. --返回程序运作结果
  89. RETCODE := RET_CODE;
  90. <<TOEND>>
  91. IF (RET_CODE = '0000') THEN
  92. RET_MSG := '运行成功!';
  93. COMMIT;
  94. ELSE
  95. RET_MSG := '运行失败!' || RET_MSG;
  96. END IF;
  97. DBMS_OUTPUT.PUT_LINE(RET_MSG);
  98. DBMS_OUTPUT.PUT_LINE('END TIME : ' ||
  99. TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
  100. END PRC_WAP_ACTIVEUSERS_BATCH;
CREATE OR REPLACE PROCEDURE PRC_WAP_ACTIVEUSERS_BATCH(RETCODE OUT VARCHAR2,
V_TABLE IN VARCHAR2)
/***********************************************************
* 功能:WAP指标--活跃用户统计(分批提交) *
* 参数:RETCODE(返回编码),V_TABLE(插入表) *
* 作者:ZENGMS *
* 创建时间:2013-01-16 *
* 版本:1.0 *
* 修改人: *
* 修改时间: *
**********************************************************/
IS
RET_CODE VARCHAR2(6); --错误信息代码
RET_MSG VARCHAR2(200); --错误信息
EXEC_SQL VARCHAR2(2000); --SQL语句
V_LAST_MONTH VARCHAR2(8); --上个月份
V_FIRST_DAY_MONTH VARCHAR2(10); --上个月第一天
V_END_DAY_MONTH VARCHAR2(10); --上个月第二天
V_TOTALNUM NUMBER; --总记录数
V_COMMITNUM NUMBER; --一次提交数量
V_RUNTIME NUMBER; --运行次数
V_NUM NUMBER; --循环变量 BEGIN
--程序开始
DBMS_OUTPUT.PUT_LINE('PRC_WAP_ACTIVEUSERS_BATCH BEGIN : ' ||
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
RET_CODE := '0000';
V_COMMITNUM := 1000000; --一百万提交一次 BEGIN SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'YYYYMM')
INTO V_LAST_MONTH
FROM DUAL; SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE) + 1, -2), 'YYYYMMDD')
INTO V_FIRST_DAY_MONTH
FROM DUAL; SELECT TO_CHAR(ADD_MONTHS(LAST_DAY(SYSDATE), -1), 'YYYYMMDD')
INTO V_END_DAY_MONTH
FROM DUAL; EXEC_SQL := 'SELECT COUNT(1) FROM(SELECT TEL AS PHONE_NUM, COUNT(T.TEL)
AS LOGIN_TIMES,''' || V_LAST_MONTH ||
''' AS LOGIN_MONTH
FROM TEMP_BOSS_BIP1A021 T
WHERE T.DAY_ID BETWEEN ''' ||
V_FIRST_DAY_MONTH || ''' AND ''' || V_END_DAY_MONTH ||
''' HAVING COUNT(T.TEL) >= 2 GROUP BY T.TEL)'; EXECUTE IMMEDIATE EXEC_SQL INTO V_TOTALNUM; --获取总记录数 --计算循环次数
V_RUNTIME := V_TOTALNUM MOD V_COMMITNUM; IF (V_RUNTIME > 0) THEN
V_RUNTIME := 1 + TRUNC(V_TOTALNUM / V_COMMITNUM);
END IF;
IF (V_RUNTIME = 0) THEN
V_RUNTIME := 0 + TRUNC(V_TOTALNUM / V_COMMITNUM);
END IF; --分批提交数据库
FOR V_NUM IN 1 .. V_RUNTIME LOOP EXEC_SQL := 'INSERT INTO ' || V_TABLE || '
(PHONE_NUM, LOGIN_TIMES, LOGIN_MONTH, ROWNUMS)
SELECT PHONE_NUM, LOGIN_TIMES, LOGIN_MONTH, ROWNUM AS ROWNUMS
FROM (SELECT TEL AS PHONE_NUM,
COUNT(T.TEL) AS LOGIN_TIMES,''' ||
V_LAST_MONTH ||
''' AS LOGIN_MONTH
FROM TEMP_BOSS_BIP1A021 T
WHERE T.DAY_ID BETWEEN ''' ||
V_FIRST_DAY_MONTH || ''' AND ''' || V_END_DAY_MONTH ||
''' HAVING
COUNT(T.TEL) >= 2
GROUP BY T.TEL) WHERE ROWNUM>' ||
(V_NUM - 1) * V_COMMITNUM || ' AND ROWNUM <=' ||
V_NUM * V_COMMITNUM; EXECUTE IMMEDIATE EXEC_SQL;
COMMIT; --提交 END LOOP; DBMS_OUTPUT.PUT_LINE('PRC_WAP_ACTIVEUSERS_BATCH END: ' ||
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS'));
EXCEPTION
WHEN OTHERS THEN
BEGIN
ROLLBACK;
RET_CODE := '0001';
RET_MSG := '存储过程PRC_WAP_ACTIVEUSERS_BATCH执行错误!' || CHR(10) ||
'错误代码:' || SQLCODE || CHR(10) || '错误信息:' ||
SUBSTR(SQLERRM, 1, 128);
GOTO TOEND;
END;
END; --返回程序运作结果
RETCODE := RET_CODE;
<<TOEND>>
IF (RET_CODE = '0000') THEN
RET_MSG := '运行成功!';
COMMIT;
ELSE
RET_MSG := '运行失败!' || RET_MSG;
END IF; DBMS_OUTPUT.PUT_LINE(RET_MSG); DBMS_OUTPUT.PUT_LINE('END TIME : ' ||
TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS')); END PRC_WAP_ACTIVEUSERS_BATCH;

三、

  1. CREATEORREPLACEPROCEDURE PRC_BS_ASS_MODIFYRESULT
  2. (ASSESS_TIME IN VARCHAR2,       --时间
  3. OBJECT_ID   IN VARCHAR2,       --对象ID
  4. KPI_ID      IN VARCHAR2,       --指标ID
  5. MOD_DATA    IN VARCHAR2,       --修改后的数据
  6. O_INFO      OUT VARCHAR2       --返回执行信息
  7. ) AS
  8. TYPE MYCURSOR IS REF CURSOR;  --定义游标类型
  9. CUR MYCURSOR;                 --定义游标
  10. TYPE CUR_DATA_TYPE IS RECORD  --定义游标数据类型
  11. (
  12. RESULT_ID    VARCHAR2(20),  --系统(人工)结果ID
  13. RULE_CONTENT VARCHAR2(2000) --解析后的规则
  14. );
  15. VRECORD CUR_DATA_TYPE;        --定义数据类型
  16. RET_CODE VARCHAR2(6);         --错误信息代码
  17. RET_MSG  VARCHAR2(200);       --错误信息
  18. EXEC_SQL VARCHAR2(1500);      --SQL语句
  19. BEGIN
  20. --程序开始
  21. DBMS_OUTPUT.PUT_LINE('START TIME : ' ||
  22. TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
  23. RET_CODE := '000000';
  24. --修改数据明细
  25. BEGIN
  26. DBMS_OUTPUT.PUT_LINE('修改数据明细 BEGIN: ' ||
  27. TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
  28. EXEC_SQL := 'UPDATE BS_ASS_RESULTLIST_INFO
  29. SET KPI_VAL = ' || MOD_DATA || '
  30. WHERE ASSESS_TIME = ''' || ASSESS_TIME || '''
  31. AND KPI_ID = ''' || KPI_ID || '''
  32. AND OBJECT_ID = ''' || OBJECT_ID || '''';
  33. EXECUTE IMMEDIATE EXEC_SQL;
  34. DBMS_OUTPUT.PUT_LINE('修改数据明细 END: ' ||
  35. TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
  36. EXCEPTION
  37. WHEN OTHERS THEN
  38. BEGIN
  39. RET_CODE := '000001';
  40. RET_MSG  := '修改数据明细时信息错误!' || CHR(10) || '错误代码:' || SQLCODE ||
  41. CHR(10) || '错误信息:' || SUBSTR(SQLERRM, 1, 128);
  42. GOTO TOEND;
  43. END;
  44. END;
  45. --借助动态游标,计算修改数据明细项
  46. BEGIN
  47. DBMS_OUTPUT.PUT_LINE('计算修改明细 BEGIN: ' ||
  48. TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
  49. EXEC_SQL := 'SELECT RESULT_ID , RULE_CONTENT
  50. FROM BS_ASS_RESULTLIST_INFO
  51. WHERE ASSESS_TIME = ''' || ASSESS_TIME || '''
  52. AND KPI_ID = ''' || KPI_ID || '''
  53. AND OBJECT_ID = ''' || OBJECT_ID || '''';
  54. OPEN CUR FOR EXEC_SQL;
  55. LOOP
  56. FETCH CUR
  57. INTO VRECORD;
  58. EXIT WHEN CUR%NOTFOUND;
  59. EXEC_SQL := 'UPDATE BS_ASS_RESULTLIST_INFO
  60. SET (ASS_MARK,
  61. FINAL_MARK) = (SELECT (' ||
  62. VRECORD.RULE_CONTENT || ') * A.KPI_COEFFICIENT,(' ||
  63. VRECORD.RULE_CONTENT || ') * A.KPI_COEFFICIENT * A.REFER_COEFFICIENT
  64. FROM BS_ASS_RESULTLIST_INFO A
  65. WHERE A.RESULT_ID = ''' || VRECORD.RESULT_ID || ''')
  66. WHERE RESULT_ID = ''' || VRECORD.RESULT_ID || '''';
  67. EXECUTE IMMEDIATE EXEC_SQL;
  68. END LOOP;
  69. DBMS_OUTPUT.PUT_LINE('计算修改明细 END: ' ||
  70. TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
  71. EXCEPTION
  72. WHEN OTHERS THEN
  73. BEGIN
  74. RET_CODE := '000002';
  75. RET_MSG  := '计算修改明细时信息错误!' || CHR(10) || '错误代码:' || SQLCODE ||
  76. CHR(10) || '错误信息:' || SUBSTR(SQLERRM, 1, 128);
  77. GOTO TOEND;
  78. END;
  79. END;
  80. --返回程序运行结果
  81. <<TOEND>>
  82. IF (RET_CODE = '000000') THEN
  83. RET_MSG := '运行成功!';
  84. O_INFO  := 'SUCCESS';
  85. COMMIT;
  86. ELSE
  87. RET_MSG := '运行失败!' || RET_MSG;
  88. O_INFO  := 'FALSE';
  89. ROLLBACK;
  90. END IF;
  91. DBMS_OUTPUT.PUT_LINE(RET_MSG);
  92. DBMS_OUTPUT.PUT_LINE('END TIME : ' ||
  93. TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
  94. END PRC_BS_ASS_MODIFYRESULT;

oracal 游标的更多相关文章

  1. 用游标实现查询当前服务器所有数据库所有表的SQL

    declare @name varchar(100) DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT Name FROM Master..SysDatabase ...

  2. 使用rowid抽取数据方法以及大数据量游标卡住的应对

    平时工作的时候,经常会遇到这种事情,从一个大表A中,抽取字段a在一个相对较小B的表的数据,比如,从一个详单表中,抽取几万个用户号码的话单出来.这种时候,一般来说, 做关联查询: create tabl ...

  3. Mysql - 游标/动态sql/事务

    游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...

  4. SQL Server 游标运用:鼠标轨迹字符串分割

    一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 游标模板(Cursor Template) 鼠标轨迹字符串分割SQL脚本实现(SQL Code ...

  5. 读书笔记--SQL必知必会21--使用游标

    21.1 游标 结果集(result set),SQL查询说检出的结果. 游标(cusror),是一个存储在DBMS服务器上的数据库查询. 游标不是一条SELECT语句,而是被该句检索出来的结果集. ...

  6. sqlserver 游标的使用

    declare @temp_temp uniqueidentifier--临时变量 DECLARE aaa CURSOR for select Id from A ------------------ ...

  7. MySQL动态游标

    通过(准备语句+视图+静态游标)实现 -- 建立测试表和数据 create table webuser (username varchar(10)); insert into webuser valu ...

  8. SQL Server游标(转)

    清晰地介绍了SQL游标,很好的学习资料. 转自 http://www.cnblogs.com/knowledgesea/p/3699851.html 什么是游标 结果集,结果集就是select查询之后 ...

  9. ABAP游标的使用

    在Oracle,SQLServer中游标的使用是经常的,所以在ABAP不懂是不行的......     1.声明游标 OPEN CURSOR [WITH HOLD] <c> FOR SEL ...

随机推荐

  1. .net core 根据数据库生成实体类

    微软最近几年在跨平台上不断发力,很多.net程序员也摩拳擦掌,对微软寄以厚望.就在最近,微软还推出了asp .net core2.0预览版. 通过对.net core的简单尝试,我发现以往我们开发MV ...

  2. python selenium1 模拟点击 测试对象 58同城验证码

    #!/usr/bin/python# -*- coding: UTF-8 -*-# @Time : 2019/12/5 17:30# @Author : shenghao/10347899@qq.co ...

  3. js Indexof的用法

    JavaScript中indexOf()函数 JavaScript中indexOf()函数方法返回一个整数值,指出  String 对象内子字符串的开始位置.如果没有找到子字符串,则返回 -1.如果 ...

  4. css的一些基础方法

    1.css样式表分别有: 内联样式表 <!DOCTYPE html> <html lang="en"> <head> <meta char ...

  5. seaborn:一个更强大的画图工具

    数据加载: 1. Countplot 和之前的pandas绘图相比,使用countplot可以自动计算每类的数量. 2. KDE Plot KDE,是"kernel density esti ...

  6. linux Linux入门

    Linux入门 Linux学习什么? 常用命令(背会) 软件安装(熟练) 服务端的架构(开开眼界) Linux如何学习? 不要问那么多为什么,后面你就懒得问了 先尝试理解一下,不行就背下来 一个知识点 ...

  7. HTML 5浏览器端数据库

    HTML 5浏览器端数据库为什么要使用浏览器端数据库:随着浏览器处理能力的增强,越来越多的双喜鸟网站开始考虑在客户端存储大量的数据,这可以减少用户从服务器获取数据的等待时间. 1.本地存储-本地存储可 ...

  8. 安装python包时出现VC++ 错误的解决方案

    方式一 就是按照提示在微软的官网上下载宇宙第一编辑器VS,安装完之后卸载掉就好了. 方式二 下载whl包安装 因为python有很多native的包,不是纯python代码,用了诸如c/c++的代码, ...

  9. Centos7 docker、harbor 安装配置

    Docker 安装 wget -O /etc/yum.repos.d/epel.repo http://mirrors.cloud.tencent.com/repo/epel-7.repo wget ...

  10. Python Scrapy爬虫框架之初次使用

    此篇博客为本人对小甲鱼的课程的总结. 关于Scrapy的安装网上都有方法,这里便不再叙述. 使用Scrapy抓取一个网站一共需要四个步骤: 0.创建一个Scrapy项目: 1.定义Item容器: 2. ...