My機能は3つのパラメータ(siteid bigint, datefrom timestamp, dateto timestamp
)を取得し、私は付属のテーブルを返すべきPostgres関数からテーブルとして結果を返すには?
ERROR: structure of query does not match function result type
私は、私はPostgresのために、SQL Serverから変換機能のスクリプトを持っている私は、関数を実行しているとき、今、私はエラーを取得しますコード内。私は "Return Query"を使用しました。
私はこのように私の関数を実行しています:
getrtbactivesiteplaces(1475, '2016-02-01', '2016-08-01')
私は私の関数から表としてこの結果を取得できますか?
これはあなたの関数の戻り値の型がsetof varchar
ですが、それはのようなものである必要があり、私の機能のスクリーンショット
{
CREATE OR REPLACE FUNCTION "whis2011"."getrtbactivesiteplaces"(IN siteid int8, IN datefrom timestamp, IN dateto timestamp) RETURNS SETOF "varchar"
AS $BODY$
DECLARE
siteid BIGINT;
datefrom timestamp without time zone;
dateto timestamp without time zone;
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
/* SQLWays Notice: SET TRANSACTION ISOLATION LEVEL READ COMMITTED must be called before procedure call */
-- SET TRANSACTION ISOLATION LEVEL READ COMMITTED
-- Insert statements for procedure here
RETURN QUERY SELECT pl."Id",
pl."RtbActiveSiteId",
pl."AdPlaceId",
pl."AdPosition",
pl."Ctr",
pl."State",
pl."BidPrice",
pl."MinBidFloor",
pl."MinBidFloorCurrency",
pl."AverageCpm",
pl."AverageClickCost",
coalesce(SUM(ss."BidsCount"),0) AS BidsCount,
coalesce(SUM(ss."ShowsCount"),0) AS ShowsCount,
coalesce(SUM(ss."RealShowsCount"),0) AS RealShowsCount,
coalesce(SUM(ss."ClicksCount"),0) AS ClicksCount,
coalesce(SUM(ss."ClickLayerClicksCount"),0) as ClickLayerClicksCount,
coalesce(SUM(ss."ShowsCost"),0::money) AS ShowsCost,
coalesce(SUM(ss."ClicksCost"),0::money) AS ClicksCost,
coalesce(SUM(ss."BidsCost"),0::money) AS BidsCost,
coalesce(SUM(ss."SliderMovesCount"),0) AS SliderMovesCount
FROM "whis2011"."RtbActiveSitePlaces" pl
LEFT OUTER JOIN "whis2011"."RtbActiveSitePlaceStatistics" ss ON ss."RtbActiveSitePlaceId" = pl."Id"
WHERE ss."Date" >= datefrom AND ss."Date" < dateto AND pl."RtbActiveSiteId" = siteid
GROUP BY pl."Id", pl."RtbActiveSiteId", pl."AdPlaceId", pl."AdPosition", pl."Ctr", pl."State", pl."BidPrice",
pl."MinBidFloor", pl."MinBidFloorCurrency", pl."AverageCpm", pl."AverageClickCost";
END;
$BODY$
LANGUAGE plpgsql
COST 100
CALLED ON NULL INPUT
SECURITY INVOKER
VOLATILE;
}
スクリーンショットが含まれています。コードの場合は、コードの画像を表示しないでください。実際のコードをここに掲載してください。 – Gerrat
この関数がテーブルを返す場合、 'select * from getrtbactivesiteplaces(1475、 '2016-02-01'、 '2016-08-01')' –
http://meta.stackoverflow.com/questions/を使用する必要があります。 285551 /なぜか私のアップロードしない画像のコードの画像の285557#285557 –