带加密功能的Postgresql 42883错误代码

带加密功能的Postgresql 42883错误代码,postgresql,encryption,Postgresql,Encryption,好的,问题是我在数据库上做一个登录控制器。创建用户的部分功能如下所示: create or replace function crear_usuario(par_usuario varchar,par_clave text, par_nombre varchar,par_correo varchar) RETURNS integer AS $$ DECLARE existe int; clave_cript bytea; llave text; BEGIN

好的,问题是我在数据库上做一个登录控制器。创建用户的部分功能如下所示:

create or replace function crear_usuario(par_usuario varchar,par_clave text,
    par_nombre varchar,par_correo varchar) RETURNS integer AS $$
DECLARE
    existe int;
    clave_cript bytea;
    llave text;
BEGIN
    /* 0:Insertado con exito | 1:Usuario ya registrado*/
    select into existe count(id) from usuarios where usuario=$1;
    if existe=0 then
        select into llave 'encrypt key';
        select into clave_cript encrypt(llave,$2,'3des');
        insert into usuarios (usuario,clave,nombre,correo) values ($1,clave_cript,$3,$4);
    end if;
    RETURN existe;
END;
$$ LANGUAGE plpgsql  RETURNS NULL ON NULL INPUT ;
错误显示在加密函数的行中,我在cli中自己测试了该函数

有什么想法吗?

错误号清楚地告诉您没有找到函数
encrypt
()

有可能

  • encrypt
    ()功能是由您忘记在该数据库上安装的扩展提供的(通过
    CREATE extension
  • 如果
    encrypt
    ()是一个自定义函数,则可能需要先运行其他脚本,在该函数之前创建该函数

它实际上是一个扩展,并且是创建的。我还单独测试了de encrypt()函数,效果很好。。。。这是一个错误截图,我需要任何特殊权限才能在另一个函数中使用“加密”函数吗??也许在创建扩展时缺少了什么??我还测试了手动插入,它是好的!!