oracal 游标
一、
- 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;
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;
二、
- CREATEORREPLACEPROCEDURE 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 := 'SELECTCOUNT(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
- GROUPBY 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;
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;
三、
- CREATEORREPLACEPROCEDURE PRC_BS_ASS_MODIFYRESULT
- (ASSESS_TIME IN VARCHAR2, --时间
- OBJECT_ID IN VARCHAR2, --对象ID
- KPI_ID IN VARCHAR2, --指标ID
- MOD_DATA IN VARCHAR2, --修改后的数据
- O_INFO OUT VARCHAR2 --返回执行信息
- ) AS
- TYPE MYCURSOR IS REF CURSOR; --定义游标类型
- CUR MYCURSOR; --定义游标
- TYPE CUR_DATA_TYPE IS RECORD --定义游标数据类型
- (
- RESULT_ID VARCHAR2(20), --系统(人工)结果ID
- RULE_CONTENT VARCHAR2(2000) --解析后的规则
- );
- VRECORD CUR_DATA_TYPE; --定义数据类型
- RET_CODE VARCHAR2(6); --错误信息代码
- RET_MSG VARCHAR2(200); --错误信息
- EXEC_SQL VARCHAR2(1500); --SQL语句
- BEGIN
- --程序开始
- DBMS_OUTPUT.PUT_LINE('START TIME : ' ||
- TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
- RET_CODE := '000000';
- --修改数据明细
- BEGIN
- DBMS_OUTPUT.PUT_LINE('修改数据明细 BEGIN: ' ||
- TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
- EXEC_SQL := 'UPDATE BS_ASS_RESULTLIST_INFO
- SET KPI_VAL = ' || MOD_DATA || '
- WHERE ASSESS_TIME = ''' || ASSESS_TIME || '''
- AND KPI_ID = ''' || KPI_ID || '''
- AND OBJECT_ID = ''' || OBJECT_ID || '''';
- EXECUTE IMMEDIATE EXEC_SQL;
- DBMS_OUTPUT.PUT_LINE('修改数据明细 END: ' ||
- TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
- EXCEPTION
- WHEN OTHERS THEN
- BEGIN
- RET_CODE := '000001';
- RET_MSG := '修改数据明细时信息错误!' || CHR(10) || '错误代码:' || SQLCODE ||
- CHR(10) || '错误信息:' || SUBSTR(SQLERRM, 1, 128);
- GOTO TOEND;
- END;
- END;
- --借助动态游标,计算修改数据明细项
- BEGIN
- DBMS_OUTPUT.PUT_LINE('计算修改明细 BEGIN: ' ||
- TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
- EXEC_SQL := 'SELECT RESULT_ID , RULE_CONTENT
- FROM BS_ASS_RESULTLIST_INFO
- WHERE ASSESS_TIME = ''' || ASSESS_TIME || '''
- AND KPI_ID = ''' || KPI_ID || '''
- AND OBJECT_ID = ''' || OBJECT_ID || '''';
- OPEN CUR FOR EXEC_SQL;
- LOOP
- FETCH CUR
- INTO VRECORD;
- EXIT WHEN CUR%NOTFOUND;
- EXEC_SQL := 'UPDATE BS_ASS_RESULTLIST_INFO
- SET (ASS_MARK,
- FINAL_MARK) = (SELECT (' ||
- VRECORD.RULE_CONTENT || ') * A.KPI_COEFFICIENT,(' ||
- VRECORD.RULE_CONTENT || ') * A.KPI_COEFFICIENT * A.REFER_COEFFICIENT
- FROM BS_ASS_RESULTLIST_INFO A
- WHERE A.RESULT_ID = ''' || VRECORD.RESULT_ID || ''')
- WHERE RESULT_ID = ''' || VRECORD.RESULT_ID || '''';
- EXECUTE IMMEDIATE EXEC_SQL;
- END LOOP;
- DBMS_OUTPUT.PUT_LINE('计算修改明细 END: ' ||
- TO_CHAR(SYSDATE, 'yyyy-mm-dd hh24:mi:ss'));
- EXCEPTION
- WHEN OTHERS THEN
- BEGIN
- RET_CODE := '000002';
- RET_MSG := '计算修改明细时信息错误!' || CHR(10) || '错误代码:' || SQLCODE ||
- CHR(10) || '错误信息:' || SUBSTR(SQLERRM, 1, 128);
- GOTO TOEND;
- END;
- END;
- --返回程序运行结果
- <<TOEND>>
- IF (RET_CODE = '000000') THEN
- RET_MSG := '运行成功!';
- O_INFO := 'SUCCESS';
- COMMIT;
- ELSE
- RET_MSG := '运行失败!' || RET_MSG;
- O_INFO := 'FALSE';
- 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_BS_ASS_MODIFYRESULT;
oracal 游标的更多相关文章
- 用游标实现查询当前服务器所有数据库所有表的SQL
declare @name varchar(100) DECLARE My_Cursor CURSOR --定义游标 FOR (SELECT Name FROM Master..SysDatabase ...
- 使用rowid抽取数据方法以及大数据量游标卡住的应对
平时工作的时候,经常会遇到这种事情,从一个大表A中,抽取字段a在一个相对较小B的表的数据,比如,从一个详单表中,抽取几万个用户号码的话单出来.这种时候,一般来说, 做关联查询: create tabl ...
- Mysql - 游标/动态sql/事务
游标这个在我目前的项目里面用的还不多, 但是其功能还是很强大的. 动态sql以前都没用过, 是跟着富士康(不是张全蛋的富土康哦)过来的同事学的. 还是挺好用的. 我的数据库方面, 跟他学了不少. 在此 ...
- SQL Server 游标运用:鼠标轨迹字符串分割
一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 游标模板(Cursor Template) 鼠标轨迹字符串分割SQL脚本实现(SQL Code ...
- 读书笔记--SQL必知必会21--使用游标
21.1 游标 结果集(result set),SQL查询说检出的结果. 游标(cusror),是一个存储在DBMS服务器上的数据库查询. 游标不是一条SELECT语句,而是被该句检索出来的结果集. ...
- sqlserver 游标的使用
declare @temp_temp uniqueidentifier--临时变量 DECLARE aaa CURSOR for select Id from A ------------------ ...
- MySQL动态游标
通过(准备语句+视图+静态游标)实现 -- 建立测试表和数据 create table webuser (username varchar(10)); insert into webuser valu ...
- SQL Server游标(转)
清晰地介绍了SQL游标,很好的学习资料. 转自 http://www.cnblogs.com/knowledgesea/p/3699851.html 什么是游标 结果集,结果集就是select查询之后 ...
- ABAP游标的使用
在Oracle,SQLServer中游标的使用是经常的,所以在ABAP不懂是不行的...... 1.声明游标 OPEN CURSOR [WITH HOLD] <c> FOR SEL ...
随机推荐
- 谈谈对Spring IOC的理解(转发)
学习过Spring框架的人一定都会听过Spring的IoC(控制反转) .DI(依赖注入)这两个概念,对于初学Spring的人来说,总觉得IoC .DI这两个概念是模糊不清的,是很难理解的,今天和大家 ...
- .net Core 图片验证码 基于SkiaSharp实现
public class ImageCaptcha { /// <summary> /// 干扰线的颜色集合 /// </summary> private List<SK ...
- js将阿拉伯数字转换成汉字大写
适用场景:票据,结算凭证等.将任意数字的金额,转换成汉字大写的形式.例如:1234.50 -> 壹仟贰佰叁拾肆圆伍角.壹.贰.叁.肆 直接贴代码,如下: //阿拉伯数字转换成大写汉字 funct ...
- [NOIP2018模拟赛10.19]只会暴力报告
闲扯 今天又是暴力满满(并不)的一天呢 昨天老师说了分数要正态分布,今天看起来...不过暴力分很多,虽然我人太傻逼又没打满 T1 woc?不是说送分的吗,看起来又是个树形DP神题,暴力告辞,链上的搞一 ...
- elementui-插槽
<el-table-column label="操作"> <template slot-scope="scope"> <el-bu ...
- 系统性能分析-vmstat命令详解
最近温馨巩固Linux 操作系统的 vmstat命令,这个命令所能打印的系统信息满多的,比较好用,就顺当记录下重要的点,方便以后排查系统问题时拿出来用 字段 含义 procs 进程信息字段: -r:正 ...
- Flutter——Row组件(水平布局组件)
Row组件的常用属性 属性 说明 mainAxisAlignment 主轴的排序方式 crossAxisAlignment 次轴的排序方式 children 组件子元素 import 'package ...
- dropbear源码编译安装及AIDE软件监控
ssh协议的另一个实现:dropbear源码编译安装:• 1.安装开发包组:yum groupinstall “Development tools”• 2.下载 -2017.75.tar.bz2 ...
- 算法---FaceNet在Tf下的实战篇
FaceNet---Tensorflow下的下的实战篇 @WP20190225 ===============目录=============== 一.FaceNet算法简介 二.FaceNet配置与使 ...
- java中静态代码块,非静态代码块,构造函数
关于静态代码块 静态代码块的写法: static { System.out.println("我是静态代码块"); } 静态代码块的特点: 1.执行优先级高于非静态的初始化块,它会 ...