2016-02-11 38 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