169it科技资讯


当前位置:  数据库>其它
本页文章导读:
    ▪更新blob字段的存储过程      CREATE OR REPLACE PROCEDURE INVHL_UPDATE_BLOB_DATA(p_table_name IN VARCHAR2,--表名 p_blob_field_name IN VARCHAR2,--blob列名 p_where_condition IN VARCHAR2,--主键 .........
    ▪MySQLReport分析报告三      mysqlreport官方手册:http://hackmysql.com/mysqlreportguide __ InnoDB Buffer Pool __________________________________________________ Usage 1.00G of 1.00G %Used: 100.00 Read hit 99.97% Pages Free 0 %Total.........
    ▪DB2中的序列      1、创建方法与oracle相同: CREATE SEQUENCE "KGL"."rbc_repid" AS BIGINT MINVALUE 1 MAXVALUE 999999999999999999 START WITH 1 INCREMENT BY 1 CACHE 20 CYCLE NO ORDER; 2、数据库中加值: insert into kgl.rep_bcard_c.........

[1]更新blob字段的存储过程
    来源: 互联网  发布时间: 2013-11-07
CREATE OR REPLACE PROCEDURE INVHL_UPDATE_BLOB_DATA(p_table_name      IN VARCHAR2,--表名
                                 p_blob_field_name IN VARCHAR2,--blob列名
                                 p_where_condition IN VARCHAR2,--主键
                                 p_id              IN VARCHAR2,--id
                                 p_blob_data       IN blob)--数据
/*表名table_name,
   clob字段名field_name
   确定要更新唯一记录的where条件p_where_condition
  传入的字符串变量P_clob_data*/
 IS
  v_lobloc       BLOB;--目标blob字段
  v_blob_data    blob;--作为接收参数的字段,参数变量不能直接拿来赋值
  v_amount       BINARY_INTEGER;--总长度
  v_query_string VARCHAR2(1000);--sql语句
  v_sub_length   binary_integer;--一次读取的最大长度,不超过32766
  v_sub_blob     blob;--一次读取的子串
  offset         binary_integer;--游标
BEGIN
  v_amount       := LENGTH(p_blob_data);
  v_blob_data    := p_blob_data;
  v_sub_length   := 32766;
  offset         :=1;
  v_query_string := 'SELECT ' || p_blob_field_name || ' FROM ' ||
                    p_table_name || ' WHERE ' || p_where_condition ||'='||p_id||
                    ' FOR UPDATE';
  dbms_output.put_line(v_query_string);
  --initialize buffer with data to be inserted or updated
  EXECUTE IMMEDIATE v_query_string--执行sql语句,将目标字段锁住,并且将目标字段赋值给v_lobloc,以待后续的操作
    INTO v_lobloc;

  --from pos position, write 32766 varchar2 into lobloc

      if v_amount > v_sub_length then 
       while offset < v_amount loop --当游标小于最大值时,继续循环
            DBMS_LOB.read(p_blob_data, v_sub_length, offset,v_sub_blob);--把读到的内容放到v_sub_blob中
            DBMS_LOB.writeappend(v_lobloc, length(v_sub_blob), v_sub_blob);--写入v_lobloc,该变量已经在之前和sql语句绑定
            offset:=length(v_sub_blob)+offset;--游标移动
       end loop;
       else
            DBMS_LOB.writeappend(v_lobloc, v_amount, v_blob_data);--若是小于32766直接写入
    end if;
  commit;
  
EXCEPTION
  WHEN OTHERS THEN
    ROLLBACK;
END;

以上就是通用版的存储过程,根据表名、blob字段名、主键名称、当前id,源数据就可以实现将源数据存入目标字段的功能。需要注意以下几点:

1,源数据必须也是blob类型的,如果你需要将其他类型比如是varchar2存入,那么就把参数改了,过程之中也要做相应的更改,主要是类型。

2,DBMS_LOB.writeappend这个方法是用来追加的方法,也就是不会清空目标字段,而是直接把源数据追加到目标字段的末尾。如果是要覆盖之前的数据,就要在执行该过程之前进行一次update操作,如:

 update jforum_posts_text pt    set pt.post_text = EMPTY_BLOB()   where pt.post_id = 8817;
也就是把一个空数据插入到目标字段中,这样就实现了清空目标字段,然后在执行该过程,就实现了覆盖的功能。注意一点,执行update语句时别忘了where子句,否则所有的记录都被清空了。

经过半下午的摸索,这个过程才基本可以满足要求,欢迎大家伙给予指教,能多多改进该过程,使其更具灵活性。


作者:xinfei0803 发表于2013-3-11 17:11:07 原文链接
阅读:51 评论:0 查看评论

    
[2]MySQLReport分析报告三
    来源: 互联网  发布时间: 2013-11-07

mysqlreport官方手册:http://hackmysql.com/mysqlreportguide

__ InnoDB Buffer Pool __________________________________________________
Usage           1.00G of   1.00G  %Used: 100.00
Read hit       99.97%
Pages
  Free              0            %Total:   0.00
  Data         63.13k                     96.34 %Drty:   0.00
  Misc           2401                      3.66
  Latched                                  0.00
Reads         205.21M    7.6k/s
  From file    65.92k     2.4/s            0.03
  Ahead Rnd                 0/s
  Ahead Sql                 0/s
Writes        516.01k    19.0/s
Flushes       102.36k     3.8/s
Wait Free           0       0/s


 

Usage           1.00G of   1.00G  %Used: 100.00


mysql innodb 的缓存统计信息.

Usage 表示, 总的缓存中, 当前已占用1G, 使用率达100.00%. 这种情况需要曾哥缓存。很大的瓶颈。
Read hit 表示缓存命中率 99.97%, 这个数值是比较理想的, 一般情况下, 都应该大于 99.98%.
 
 
 

 

作者:k_scott 发表于2013-3-11 17:06:43 原文链接
阅读:50 评论:0 查看评论

    
[3]DB2中的序列
    来源: 互联网  发布时间: 2013-11-07
1、创建方法与oracle相同:

CREATE SEQUENCE "KGL"."rbc_repid" AS BIGINT
MINVALUE 1 MAXVALUE 999999999999999999
START WITH 1 INCREMENT BY 1
CACHE 20 CYCLE NO ORDER;

2、数据库中加值:

insert into kgl.rep_bcard_comsume(repid,purse_cardid) values(nextval for kgl.rbc_repid,'123')

使用方式为:nextval for kgl.rbc_repid
作者:milife2012 发表于2013-3-11 16:58:34 原文链接
阅读:52 评论:0 查看评论

    
最新技术文章:
▪gc buffer busy/gcs log flush sync与log file sync    ▪让你的PL/SQL更好用    ▪ADO.NET中的非脱机数据库查询
▪参数job_queue_processes与Oracle jobs    ▪11gR2游标共享新特性带来的一些问题以及_cursor...    ▪_library_cache_advice和latch:shared pool、latch:shared poo...
▪SQL: Date Utility    ▪DB2 分区表增加分区    ▪DB2第一步 — 创建表
▪oracle 数据库    ▪插入10万条记录测试    ▪rebuild index VS. rebuild index online
▪如何处理undo tablespace 表空间太大的问题    ▪ado执行存储过程中包含结果集获取输出参数为...    ▪oracle函数的demo
▪Entity Framework 学习建议及自学资源    ▪存储过程的编写    ▪Linux/Unix shell 自动发送AWR report(二)
▪第二章 Oracle恢复内部原理(基础数据结构)    ▪Redis源码学习之【Tcp Socket封装】    ▪Java Jdbc减少与Oracle之间交互提升批量处理性能...
▪南大通用GBase8a Vs Oracle11g 单机测试亲测    ▪oracle 中行列转换    ▪rhel下安装oracle10g+asm---测试环境搭建
▪Redis系列-主从复制配置    ▪MySQL索引与查询优化    ▪INDEX受到NULL值的影响
▪测试人员的SQL语言 系列    ▪SQL数据库基本语句    ▪MySQL Replication常见错误整理[持续更新...]
▪eclipse下建立esper的demo    ▪把oracle rac 转化为单机数据库    ▪Redis系列-存储篇sorted set主要操作函数小结
▪基本的SQL*Plus报表和命令    ▪druid简单教程    ▪11g调度--scheduler使用
▪EF基础一    ▪db2存储过程中循环语句while do的continue有没有...    ▪oracle 创建DBLINK
▪DB2数据库备份还原    ▪Warning: prerequisite DBD::mysql 1 not found错误解决方...    ▪innotop性能监视mysql,innodb工具
▪数据迁移:DataGuard配置    ▪QX项目实战-19.跨库数据同步    ▪Mysql EXPLAIN
▪Oracle 11g AWR 系列七:Active Session History (ASH) 报...    ▪Oracle 11G新特性(共36个)    ▪父子节点问题
▪OEM简介及按钮乱码问题    ▪NoSql之MongoDB的常用类管理    ▪ORA-39700: database must be opened with UPGRADE option
▪node.js 访问redis数据库,pub/sub    ▪使用DBMS_REDEFINITION在线重定义分区表    ▪SQL Developer 使用问题与解决方法汇总
▪oralce 11g dataguard 概念    ▪ORA-30004 错误处理    ▪oracle分组函数rollup,cube
▪Sql Developer 使用问题与解决方法汇总    ▪Configure Oracle Dataguard Primary-ASM to Physical-ASM    ▪Oracle Data Guard 理论知识
▪Control File 恢复    ▪Oracle数据文件收缩    ▪Oracle 11g AWR 系列五:如何生成 AWR 报告?
▪Wireshark数据包分析实战(第2版)    ▪MySql用户权限控制    ▪db2和oracle查询序列区别
▪更新blob字段的存储过程    ▪MySQLReport分析报告三    ▪DB2中的序列
▪Oracle中DBMS_RANDOM.STRING 的用法    ▪SQL SERVER无法安装成功,sqlstp.log文件提示[未发...    ▪Data Guard 部署物理备库的 10 大注意事项
▪万能数据库查询分析器使用技巧之(九)    ▪SQL 自定义Split函数    ▪视图 v$sql,v$sqlarea,$sqltext,v$sqltext_with_newlines 的...
▪Data Guard Standby_archive_dest 和 Log_archive_dest_n 的...    ▪机房收费系统数据库设计(一)    ▪利用putty的SSH tunnel连接Oracle
▪DBCA建库偶遇ORA-27125    ▪使用PowerPivot建立简单的分析模型    ▪Linux/Unix shell 自动发送AWR report
▪写入到blob字段的存储过程    ▪关于JDBC中ResultSet接口的一点细节探究    ▪Data Guard 配置 Standby Redo Log
▪linux下redis的安装    ▪windows下redis的安装    ▪手动创建数据库步骤(简单翻译官方文档)
▪Ubuntu安装Mongodb    ▪SQL CLR应用    ▪redis的配置文件参数--详细说明
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2017,169IT.COM,E-mail:www_169it_com#163.com(请将#改为@)

浙ICP备11055608号