make_hash()函数?哈希码?

时间:2012-04-03 16:42:11

标签: sql function postgresql

我的老板给我发了一个程序,我需要这个程序:

  • 创建一个创建临时表的函数
  • 从表中获取数据
  • 使用函数来细化数据
  • 为其中两列创建哈希码
  • 将temp中的所有数据插入原始数据
  • 放下桌子

我一直在尝试查看make_hash()函数的功能。每当我运行 FUNCTION 时,它就会在该行上给出错误,所以我猜我需要先在create function中的begin语句之前声明它。或者它是用户创建的功能?如果是这样,我有办法找到函数所在的模式吗?

我一直在尝试研究书籍和在线,但我找不到任何东西,即使在PostgreSQL网站上也是如此。

--------------------------------------------

ERROR:  function make_hash(character varying) does not exist
LINE 1: UPDATE temp_match_queue_04022012 SET title_hash = make_hash(...
                                                          ^
HINT:  No function matches the given name and argument types. You might need to add explicit type casts.
QUERY:  UPDATE temp_match_queue_04022012 SET title_hash = make_hash(as_title) WHERE as_title IS NOT NULL
CONTEXT:  PL/pgSQL function "metadata_matching_temp" line 30 at SQL statement

********** Error **********

ERROR: function make_hash(character varying) does not exist
SQL state: 42883
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
Context: PL/pgSQL function "metadata_matching_temp" line 30 at SQL statement

2 个答案:

答案 0 :(得分:1)

正如@Clodoaldo所提到的那样,请查看pgcrypto(您可以将其安装到postgres上,在debian上安装到postgresql-contrib iirc中)。

您打电话的任何功能必须在BEGIN部分之前可用。如果需要多个函数,可以将函数组合到包中。

答案 1 :(得分:1)

没关系! make_hash函数是用psql编写的,这就是它无法正常工作的原因。我正在使用pgAdmin III,并且必须与函数一起调用模式名称才能使用它。非常感谢大家的帮助!