在oracle中创建动态函数
Create dynamic function in oracle
我有很多table结构相同的。其中一个结构给出如下: table name is TRACK_CONNECTION
.
现在我想创建动态函数 decrypt_password_global
以便它可以获取动态输入值并从 table 和 return 值解密密码。我想在函数中传递 table_name、column_name、table_id、table_id_value 作为输入参数,这样在执行函数 decrypt_password_global 例如 TRACK_CONNECTION
table 我会通过 (TRACK_CONNECTION,PASS,ID,11)
。通过这种方式,我也可以将 decrypt_password_global 函数用于其他 table。我已经创建了 decrypt_password 函数来解密密码并且它工作正常。我只想使用 decrypt_password_global function
中的 decrypt_password function
来解密 table 中的值。
构建一个 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;
我有很多table结构相同的。其中一个结构给出如下: table name is TRACK_CONNECTION
.
现在我想创建动态函数 decrypt_password_global
以便它可以获取动态输入值并从 table 和 return 值解密密码。我想在函数中传递 table_name、column_name、table_id、table_id_value 作为输入参数,这样在执行函数 decrypt_password_global 例如 TRACK_CONNECTION
table 我会通过 (TRACK_CONNECTION,PASS,ID,11)
。通过这种方式,我也可以将 decrypt_password_global 函数用于其他 table。我已经创建了 decrypt_password 函数来解密密码并且它工作正常。我只想使用 decrypt_password_global function
中的 decrypt_password function
来解密 table 中的值。
构建一个 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;