我有很多具有相同结构的表。其中一个结构如下:表名为TRACK_CONNECTION
。
现在我想创建动态函数decrypt_password_global
,以便它可以获取动态输入值并解密表中的密码并返回值。我想在函数中传递table_name,column_name,table_id,table_id_value作为输入参数,这样在执行函数decrypt_password_global时,例如TRACK_CONNECTION
表,我将传递(TRACK_CONNECTION,PASS,ID,11)
。以这种方式我也可以使用decrypt_password_global函数用于其他表。我已经为decrpytion密码创建了decrypt_password函数,它工作正常。我只想在decrypt_password function
中使用decrypt_password_global function
来解密表中的值。
答案 0 :(得分:1)
构建一个SELECT-String并使用EXECUTE IMMEDIATE / INTO:
CREATE OR REPLACE FUNCTION decrypt_password( table_name IN varchar2,column_name IN varchar2,table_id varchar2,table_id_val varchar2 ) RETURN VARCHAR2
IS
encrypted_pas varchar2(100);
decrypted_pas varchar2(100);
BEGIN
EXECUTE IMMEDIATE 'select ' || column_name || ' from ' || table_name || ' where ' || table_id || ' = ' || table_id_val
INTO encrypted_pas;
Select decrypt_password(encrypted_pas) into decrypted_pas from dual;
END decrypt_password;