2

在 postgresql 中创建函数时是否可以将 hstore 声明为参数类型?

CREATE FUNCTION samplehstore(uname hstore)
RETURNS SETOF void AS 
DECLARE 
BEGIN
RAISE NOTICE 'uname : %', uname ;        
END;
LANGUAGE plpgsql
4

2 回答 2

1

是的。刚刚测试:

create or replace function samplehstore(_h hstore)
returns text as
$$
begin
    return _h->'a';
end
$$
language plpgsql;

select samplehstore('a=>1'::hstore)
>>> 1
于 2013-09-14T10:08:49.143 回答
0

您的示例理想地是正确的,但是您只是忘记将函数体包含在字符串中(hstore部分没问题)。我建议这样做(见$$补充):

CREATE FUNCTION samplehstore(uname hstore)
RETURNS SETOF void AS $$
DECLARE 
BEGIN
    RAISE NOTICE 'uname : %', uname ;        
END;
$$
LANGUAGE plpgsql;

PostgreSQL 的函数基本上是一个字符串,而美元引号是一种类似于单引号的语法,试试这个:

SELECT $$my string$$, $id$my string$id$, 'my string';

三者是等价的。有关更多信息,请参阅文档

于 2013-09-14T10:27:54.220 回答