在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;