2016-02-11 36 views
2

好的,事情是我在我的数据库上做了一个登录控制器。部分原因是这个函数来创建用户认为是这样的:带加密功能的Postgresql 42883错误代码

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在它自己的测试线。

任何想法?

回答

0

Looking up错误编号清楚地告诉您找不到函数encrypt()。

它可能

  • encrypt()函数是由你忘了做安装数据库(通过CREATE EXTENSION
  • 如果encrypt()是一个自定义功能的扩展,可能是一些提供其他脚本需要先运行,然后才能在此函数之前创建该函数。
+0

这实际上是一个扩展,它被创建。我也自己测试de encrypt()函数,并且工作正常.... https://www.dropbox.com/s/mji2goyb00gjmkg/Captura%20de%20pantalla%202016-02-19%2019.18.59.png ?dl = 1 下面是错误的屏幕截图 – arnaldoeperezb

+0

我是否需要任何特殊权限才能使用'encrypt'功能在另一个功能中使用?也许在扩展的创建中缺少一些东西?我也测试它在手动插入,它是好的! – arnaldoeperezb