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 ...
随机推荐
- ItemsControl使用1
<ItemsControl ItemsSource="{Binding DataItemsSource}"> //绑定一个List <ItemsControl.I ...
- lua堆栈
lua堆栈 来源 https://blog.csdn.net/suhuaiqiang_janlay/article/details/56702381 来源 https://blog.csdn.net/ ...
- json树迭代
getArray(data){ for (var i in data) { if(data[i].disabled){ data[i].disabled = false } if(data[i].ch ...
- wireshark 分析过滤数据
1.过滤IP,如来源IP或者目标IP等于某个IP例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107或者ip.addr eq 192.168.1. ...
- SQL学习——IN运算符
IN的作用 IN运算符允许您在WHERE子句中指定多个值. IN运算符是多个OR条件的简写. IN的语法 SELECT column_name(s) FROM table_name WHERE col ...
- dedecms Fatal error: Out of memory
max_execution_time = 300 php执行持续最长时间 比如:网站全站更新max_input_time = 30 php传送数据最长时间 比如:上传大文件memory_l ...
- 【Day2】4.第三方模块的安装与使用
课程目标 1. 使用模块 2. 安装第三方模块 使用模块 • 一个.Py文件称之为一个模块(Module) • 好处: 1. 便于代码维护,把很多函数放到不同文件,一个.py文件 的 代码数量少 2. ...
- Linux学习笔记(一)分区
一.硬件设备文件名 二.设备文件名 /dev/hda1(IDE硬盘接口) /dev/sda1(SCSI硬盘接口.SATA硬盘接口) 其中,a代表第1个硬盘(以此类推,b为第2个硬盘),1代表第1个分区 ...
- python错误大全
1.NameError:name 'Ture' is not defined 这个是名字没有定义,也可能写错了 while True: 2.IndentationError: unindent doe ...
- JS中call()和apply()以及bind()的区别
一.方法定义: apply:调用一个对象的一个方法,用另一个对象替换当前对象.例如:B.apply(A, arguments);即A对象应用B对象的方法. call:调用一个对象的一个方法,用另一个对 ...