Sql make_hash()函数?散列码?

Sql make_hash()函数?散列码?,sql,function,postgresql,Sql,Function,Postgresql,我的老板向我发送了一个流程,我需要: 创建一个创建临时表的函数 从表中获取数据 使用函数优化数据 为其中两列创建哈希代码 将临时数据中的所有数据插入原始数据 放下桌子 我一直在尝试查看make_hash()函数的功能。每当我运行函数时,都会在那一行给我一个错误,所以我猜我需要在create函数的begin语句之前先声明它。还是用户创建的函数?如果是这样,有没有办法找到函数所在的模式 我一直试图在书上和网上进行研究,但我什么也找不到,甚至在PostgreSQL网站上也找不到 ---------

我的老板向我发送了一个流程,我需要:

  • 创建一个创建临时表的函数
  • 从表中获取数据
  • 使用函数优化数据
  • 为其中两列创建哈希代码
  • 将临时数据中的所有数据插入原始数据
  • 放下桌子
我一直在尝试查看make_hash()函数的功能。每当我运行函数时,都会在那一行给我一个错误,所以我猜我需要在create函数的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

正如@Clodoaldo提到的,查看pgcrypto(您可以通过在postgresql contrib iirc中的debian its上将其安装到您的postgres中来获得它)


在开始部分之前,您调用的任何函数都必须可用。如果需要多个函数,可以将函数组合到包中。

无需担心!make_散列函数是用psql编写的,这就是它不能正常工作的原因。我使用的是pgAdmin III,模式名必须与函数一起调用才能工作。谢谢你的帮助

添加您的代码和错误消息..已更新!抱歉,我之前发布的查询错误与此不同。查看@JohnV您应该将您的解决方案作为答案发布并接受,而不仅仅是评论。我还不能,因为它说我还是新的。一定会更新的!我会注意到这一点。谢谢你,安吉洛!我将阅读Clodoaldo发给我的pgcrypto链接的更多内容。啊,在开始部分之前提供函数是什么意思???@JohnV我的意思是,在调用代码之前(不是函数本身吗?我想是的)。服务器必须已经知道该函数。我相信是这样的。但是我是如何工作的,我需要在我创建的函数中输入schemaname.make_hash()。