আমি উবার্টু 12.04 সহ পোস্টগ্রেস্কেল 9.1 ব্যবহার করি।
আমার প্রশ্নের ক্রেগ এর উত্তর দ্বারা অনুপ্রাণিত setof টাইপ বা setof রেকর্ড সংযুক্তকরণ আমি ভেবেছিলাম আমি ব্যবহার সঙ্গে ভাল যেতে হবে return query
, setof record
, এবং এই plpgsql ফাংশন মধ্যে একটি সিরিজ জেনারেটর:
create or replace function compute_all_pair_by_craig(id_obj bigint)
returns setof record as $$
begin
return query select o.id, generate_series(0,o.value) from m_obj as o;
end;
$$ language plpgsql;
কার্যকর করার সময় আমি ত্রুটি পেয়েছি:
ERROR: set_valued function called in context that cannot accept a set
কি সমস্যা ? ক্রেগের বিপরীতে আমি ফাংশনটি ফিরে আসতে বলি setof record
।
আমি ক্রেগের মতো হুবহু কাজ করে এমন কিছু অর্জন করতে পারি, যেমন কোনও প্রকারের সংজ্ঞা দিয়ে create type pair_id_value as (idx bigint, value integer)
এবং আমার পিএলপিএসএইচএল ফাংশনটির setof of pair_id_value
পরিবর্তে একটি পরিবর্তিত করে setof record
।
তবে এই কার্যনির্বাহী সমাধানের পরেও আমি এখনও বুঝতে পারি না যে কেন select id, generate_series(0,13)
একা দুটি কলামে ফলাফল ফিরে আসবে ... এবং বিপরীতে ফাংশনটি (সেটআপ পেয়ার_আইডি_ভ্যালু) কল করার সাথে কেবল একটি কলামেরreturn query select id, generate_series(0,my_obj.value) from my_obj
ফলাফল দেখাবে যা ক্ষেত্রের মতো দেখায় এটি "(123123,0)" "(123123,1)" "(123123,2)" (3 টি সারি) যা স্পষ্টতই টিপলস।
এটি এমন কোনও ক্ষেত্রে যেখানে অস্থায়ী টেবিলটি তৈরি করা উচিত / হওয়া উচিত?
BEGIN
এবং এর পরে একটি অনুপস্থিতRETURN QUERY
। এই ত্রুটিগুলি সংশোধন করার পরে আমি ফিরে আসার সময় ত্রুটিটি নিশ্চিত করিrecord
; উত্তরে ব্যাখ্যা করবে।