Sql 创建SELECT过程/触发器以解密ORACLE上的数据

Sql 创建SELECT过程/触发器以解密ORACLE上的数据,sql,oracle,stored-procedures,encryption,database-trigger,Sql,Oracle,Stored Procedures,Encryption,Database Trigger,我有这个疑问 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/

我有这个疑问

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;

我想选择这个表。但我不想一次又一次地写这段代码。我需要做什么?如何更轻松地从该表中选择数据?Oracle 11g XE

您可以使用上述选择条件创建一个视图,然后只需调用该视图上的select查询即可。不确定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;

然后,您可以从myschema.SomeViewName调用SELECT*,尽管使用通配符通常不是一个好主意,因为您可以在不需要时返回所有列。如果您想动态传递参数,那么可以考虑使用函数。

取决于您将如何使用它。您是否有兴趣一次存储查询的结果集,然后在多个位置使用它?还是每次都要使用不同的参数运行查询并得到不同的结果?