以下に示すような機能があります。パラメータを使用して実行する必要があるため、クエリ文字列があります。私の問題は次のとおりです。「for」内にクエリを配置するにはどうすればよいですか? 私は試してみました
EXECUTE IMMEDIATE query_string
私のforループでは動作しません。
誰?
よろしく!
create or replace FUNCTION RO_FUN_TOTAL_SCORE_DATE_PORTAL
(
v_DATE_FIELD IN VARCHAR2
) RETURN RO_OBJ_NESTED_TOTAL_SCORE IS
v_ret RO_OBJ_NESTED_TOTAL_SCORE;
query_string VARCHAR2(1000);
BEGIN
/*Initialize object type to save data*/
v_ret := RO_OBJ_NESTED_TOTAL_SCORE();
query_string := 'SELECT ROUND(AVG(generic_score),2) AS score,
yrp.comment_date_pk AS comment_date,
yrp.hot_id_pk AS hot_id,
yp.portal_id_pk AS portal_id,
AVG(total_opinions) AS total_opinions
FROM yrportalreview yrp JOIN yrhotellinks yrh ON yrp.hot_id_pk =
yrh.hot_id
AND yrp.portal_id_pk = yrh.portal_id AND yrp.comment_date.pk = ' ||
v_DATE_FIELD ||
' WHERE yrp.hot_id_pk IN (92, 27)
AND concept_id_pk = 1
AND yp.active = 1
GROUP BY hot_id_pk,
yp.portal_id_pk,
yrp.comment_date_pk';
FOR I IN (EXECUTE IMMEDIATE query_string)
LOOP
/*insert in table type rows with data*/
v_ret.extend;
v_ret(v_ret.count) := RO_OBJ_TOTAL_SCORE_DATE_PORTAL(i.score,
i.comment_date, i.hot_id, i.portal_id, i.total_opinions);
END LOOP;
RETURN v_ret;
END RO_FUN_TOTAL_SCORE_DATE_PORTAL;