首页 > 解决方案 > 创建 SELECT 过程/触发器以解密 ORACLE 上的数据

问题描述

我有这个查询

SELECT id, UTL_I18N.RAW_TO_NCHAR(DBMS_CRYPTO.DECRYPT(password,
                                pkg_so_42979606.cipher_type(),
                                UTL_ENCODE.BASE64_DECODE(UTL_I18N.STRING_TO_RAW('pMV3D4xhyfNxp3YyfLWzAErGcKkIjK3X6uc/WIeVTls=', 'AL32UTF8'))),
                             'AL32UTF8') password
FROM customeren;

我想选择这张桌子。但我不想一次又一次地编写这段代码。我需要做什么?如何以更简单的方式从该表中选择数据?甲骨文 11g XE

标签: sqloraclestored-proceduresencryptiondatabase-trigger

解决方案


您可以使用上面的选择条件创建一个视图,然后在视图上调用您的选择查询。不确定 Oracle 语法是否相同,但在 SQL Server 中会是

    CREATE VIEW myschema.SomeViewName AS
    SELECT id, UTL_I18N.RAW_TO_NCHAR(DBMS_CRYPTO.DECRYPT(password,
                                pkg_so_42979606.cipher_type(),
                                UTL_ENCODE.BASE64_DECODE(UTL_I18N.STRING_TO_RAW('pMV3D4xhyfNxp3YyfLWzAErGcKkIjK3X6uc/WIeVTls=', 'AL32UTF8'))),
                             'AL32UTF8') password
    FROM customeren;

然后您可以调用 SELECT * FROM myschema.SomeViewName,尽管使用通配符通常不是一个好主意,因为当您可能不需要它们时,您会返回所有列。如果要动态传递参数,则可以考虑改用函数。


推荐阅读