2013-09-16 3 views
0

«hstoredata» - это переменная типа hstore, которая содержит пары ключевых значений.Функция, возвращаемая как hstore datatype в postgresql

i.e для ex: переменная «hstoredata» содержит пары значений ключа '"ed"=>"1", "id"=>"1", "age"=>"27"'.

Если переменная «hstoredata» передается функции i.e select sampletest(hstoredata), функция возвращается как null.

-- Function: sampletest(hstore) 

-- DROP FUNCTION sampletest(hstore) 

CREATE OR REPLACE FUNCTION sampletest(hstoredata hstore)  
RETURNS SETOF void AS  
$BODY$  
DECLARE 
newhstoredata hstore;  
BEGIN  
    newhstoredata := samplehstore(hstoredata);  
    RAISE NOTICE 'newhstoredata: %', newhstoredata;  
END;  
$BODY$  
    LANGUAGE plpgsql VOLATILE  
    COST 100  
    ROWS 1000;  
ALTER FUNCTION sampletest(hstore) 
    OWNER TO postgres; 

Ниже программа для функции samplehstore(hstore)

-- Function: samplehstore(hstore) 

-- DROP FUNCTION samplehstore(hstore) 

CREATE OR REPLACE FUNCTION samplehstore(hstoredata hstore)  
RETURNS SETOF void AS  
$BODY$  
BEGIN  
    RAISE NOTICE 'hstoredata: %', hstoredata;  
END; 
$BODY$  
LANGUAGE plpgsql VOLATILE  
COST 100 
ROWS 1000; 
ALTER FUNCTION samplehstore(hstore) 
OWNER TO postgres; 
+3

И в чем вопрос/проблема? –

ответ

1

Неясно, что вы спрашиваете точно, но, основываясь на названии, я предполагаю, что вы хотите, чтобы ваша функция возвращала что-то.

Если это так, проблема заключается в том, что вы заявляете свою функцию как возвращающую setof void.

Заявить об этом как возвращающем, что бы это ни было необходимо, и использовать return ... или return query ..., в зависимости от того, что вам действительно нужно.

Смежные вопросы