GBase 8c V5 开发者手册 南大通用数据技术股份有限公司 205 gbase(# credit_card varchar(19) encrypted with (column_encryption_key = ImgCEK1, encryption_type = DETERMINISTIC) gbase(# ) with (orientation=row); CREATE TABLE 步骤3 插入数据。 postgres=# insert into creditcard_info values(1, 'Avi', '1234567890123456'); INSERT 0 1 postgres=# insert into creditcard_info values(2, 'Eli', '2345678901234567'); INSERT 0 1 步骤4 创建函数支持密态等值查询。 postgres=# CREATE FUNCTION f_encrypt_in_sql(val1 text, val2 varchar(19)) RETURNS text AS 'SELECT name from creditcard_info where name=$1 or credit_card=$2 LIMIT 1' LANGUAGE SQL; CREATE FUNCTION postgres=# CREATE FUNCTION f_encrypt_in_plpgsql (val1 text, val2 varchar(19)) gbase-# RETURNS text AS $$ gbase$# DECLARE gbase$# c text; gbase$# BEGIN gbase$# SELECT into c name from creditcard_info where name=$1 or credit_card =$2 LIMIT 1; gbase$# RETURN c; gbase$# END; $$ gbase-# LANGUAGE plpgsql; CREATE FUNCTION 步骤5 执行函数。 postgres=# SELECT f_encrypt_in_sql('Avi','1234567890123456'); f_encrypt_in_sql ------------------ Avi (1 row) postgres=# SELECT f_encrypt_in_plpgsql('Avi', val2=>'1234567890123456'); f_encrypt_in_plpgsql ---------------------- Avi (1 row) ----结束 函数/存储过程中的“执行动态查询语句”中的查询是在执行过程中编译,因此函数/存储