सरल उदाहरण पर विचार करें:
postgres=# create function foofunc() returns table(a int, b text) language sql as $$ select 1, 'a'::text $$;
postgres=# select foofunc();
╔═════════╗
║ foofunc ║
╠═════════╣
║ (1,a) ║
╚═════════╝
जब कॉलम/वेरिएबल संदर्भ में कॉल किया जाता है तो यह निर्दिष्ट रिटर्निंग प्रकार का एकल मान देता है। यहाँ त्रुटि का स्रोत है:दृश्य का select
केवल एक कॉलम लौटाता है।
हालाँकि यदि फ़ंक्शन को तालिका संदर्भ में कहा जाता है तो यह एक वास्तविक तालिका की तरह मान लौटाता है:
postgres=# select * from foofunc();
╔═══╤═══╗
║ a │ b ║
╠═══╪═══╣
║ 1 │ a ║
╚═══╧═══╝
तो जब आप दृश्य बनाते हैं तो आपको दूसरे दृष्टिकोण का उपयोग करना चाहिए:
CREATE VIEW v1 (c1, c2, c3, c4, c5) AS
SELECT * FROM f1 (1, 2);