0

「hstoredata」は、キーと値のペアを含むタイプ hstore の変数です。

たとえば、「hstoredata」変数にはキーと値のペアが含まれます'"ed"=>"1", "id"=>"1", "age"=>"27"'

「hstoredata」変数が関数に渡されると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;
4

1 に答える 1

1

正確に何を求めているのかは不明ですが、タイトルに基づいて、関数が何かを返すことを望んでいると思います。

もしそうなら、ここでの問題は、関数を return として宣言していることですsetof void

必要なものを返すように宣言し、実際に必要なものに応じてreturn ...orを使用します。return query ...

于 2013-09-16T13:42:41.647 に答える