• 分块读取Blob字段数据(MSSQL)


    MSSQL中提供了一个功能,能够分块读取Blob字段中的数据,写了一个存储过程代码如下:

    CREATE PROCEDURE PRO_GET_FILE_DATA
        @PKG_ID INT,
        @VER VARCHAR(50),
        @START INT,
        @COUNT INT
    AS
    BEGIN
        --定义指针变量,必须为varbinary(16)
        DECLARE @ptrval varbinary(16);
        --定义指针指向
        SELECT @ptrval = TEXTPTR(FILE_DATA)
        FROM T_SYS_PKG_FILE
        WHERE PKG_ID = @PKG_ID //获取某条记录的条件
          AND FILE_VER = @VER;
        --获取数据
        IF @ptrval IS NOT NULL
            READTEXT T_SYS_PKG_FILE.FILE_DATA @ptrval @START @COUNT;
    END;

    这个功能最大的好处就是:可以读取Blob字段中的任意一部分数据。我主要使用在客户端执行文件升级。

    1、把客户端所有业务封装到dll中,由主程序调用时,载入dll及其业务模块;

    2、当业务模块版本升级时,将dll导入到数据库的Blob中,客户端主程序在载入dll之前,先进行版本检查,如果有新版本,则下载业务模块dll;

    3、为展示下载进度,分块取Blob字段中的内容,就用到了上述功能;

    4、将业务尽可能封装到不同dll,这样其体积要小一些,只有在调用业务模块时再载入dll,可以有效避免大量客户端同时下载同一个dll带来的问题。

    5、暂适用于MSSQL,Oracle的还没有想好。

  • 相关阅读:
    hbase 自定义过滤器
    idea的protobuf使用
    Docker自动补全容器名
    Docker普通用户不使用sudo提权
    Hadoop安装错误总结
    Git中撤销提交
    Python经典算法片段
    Git设置彩色输出
    Git同步远程fork的项目
    Git错误汇总
  • 原文地址:https://www.cnblogs.com/ChinaEHR/p/3387884.html
Copyright © 2020-2023  润新知