小编adi*_*dim的帖子

在blob表的触发器中计算blob哈希

我的环境是Oracle 11g.我有一个表T_IMG,其列是图像blob,图像标识符,图像的哈希计算为SHA256.我希望每次在T_IMG表中插入或更新行时计算图像哈希并将其插入到T_IMG表中.为此,我在T_IMG表上使用插入或更新的before触发器,但是我很难访问触发器内的图像blob列.

CREATE TABLE TEST.T_IMG
(
    IDN       VARCHAR2(18 BYTE)      NOT NULL,
    IMG       BLOB                   NOT NULL,
    IMGHASH   VARCHAR2(128 BYTE)
);
Run Code Online (Sandbox Code Playgroud)

字符串和blob的SHA256哈希值由以下代码计算,该代码基于Sean Stuber在http://seanstuber.wordpress.com/2012/03/22/using-java-to-extend-dbms_crypto/上的示例

CREATE OR REPLACE AND RESOLVE JAVA SOURCE NAMED sha2 AS
import java.security.MessageDigest;
import oracle.sql.*;
public class sha2
{
    public static oracle.sql.RAW get_digest_string( String p_string, int p_bits ) throws Exception
    {
        MessageDigest v_md = MessageDigest.getInstance( "SHA-" + p_bits );
        byte[] v_digest;
        v_digest = v_md.digest( p_string.getBytes( "UTF-8" ) );
        return RAW.newRAW(v_digest);
    }

    public static oracle.sql.RAW get_digest_blob( oracle.sql.BLOB p_blob, int …
Run Code Online (Sandbox Code Playgroud)

oracle blob sha2 oracle11gr2 database-trigger

5
推荐指数
1
解决办法
2069
查看次数

标签 统计

blob ×1

database-trigger ×1

oracle ×1

oracle11gr2 ×1

sha2 ×1