은 내가 포스트 그레스에 SQL 서버에서 변환 기능 스크립트 지금은 내가 내 함수는 3 개 개의 매개 변수 (siteid bigint, datefrom timestamp, dateto timestamp
)을 얻고, 내가 포함 된 테이블을 반환해야Postgres 함수에서 결과를 테이블로 반환하는 방법은 무엇입니까?
ERROR: structure of query does not match function result type
오류를 얻을 기능을 실행하고있어이 코드에서. 나는 "Return Query"를 사용했다.
나는이처럼 내 함수를 실행 해요 :
getrtbactivesiteplaces(1475, '2016-02-01', '2016-08-01')
나는 나의 함수의 테이블로이 결과를 얻을 수 있습니까?
이 내 기능의 스크린 샷이다
{
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 –