Hstore作为postgresql中的参数类型

时间:2013-09-14 09:26:47

标签: postgresql hstore

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

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

2 个答案:

答案 0 :(得分:1)

是。刚刚测试过:

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

select samplehstore('a=>1'::hstore)
>>> 1

答案 1 :(得分: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';

三者是等价的。请参阅docs for more information