PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

फ़ंक्शन से रिटर्न सेटऑफ़ रिकॉर्ड (वर्चुअल टेबल)

(यह सब पोस्टग्रेस्क्ल 8.3.7 के साथ परीक्षण किया गया है-- क्या आपके पास पहले का संस्करण है? बस "$ 1 के लिए उपनाम" के अपने उपयोग को देख रहे हैं)

CREATE OR REPLACE FUNCTION storeopeninghours_tostring(numeric)
 RETURNS SETOF RECORD AS $$
DECLARE
 open_id ALIAS FOR $1;
 result RECORD;
BEGIN
 RETURN QUERY SELECT '1', '2', '3';
 RETURN QUERY SELECT '3', '4', '5';
 RETURN QUERY SELECT '3', '4', '5';
END
$$;

यदि आपके पास वापस जाने के लिए एक रिकॉर्ड या पंक्ति चर है (क्वेरी परिणाम के बजाय), तो "रिटर्न QUERY" के बजाय "रिटर्न नेक्स्ट" का उपयोग करें।

फ़ंक्शन को लागू करने के लिए आपको कुछ ऐसा करने की आवश्यकता है:

select * from storeopeninghours_tostring(1) f(a text, b text, c text);

तो आपको यह परिभाषित करना होगा कि आप क्वेरी में फ़ंक्शन की आउटपुट पंक्ति स्कीमा की अपेक्षा करते हैं। इससे बचने के लिए, आप फ़ंक्शन परिभाषा में आउटपुट चर निर्दिष्ट कर सकते हैं:

CREATE OR REPLACE FUNCTION storeopeninghours_tostring(open_id numeric, a OUT text, b OUT text, c OUT text)
 RETURNS SETOF RECORD LANGUAGE 'plpgsql' STABLE STRICT AS $$
BEGIN
 RETURN QUERY SELECT '1'::text, '2'::text, '3'::text;
 RETURN QUERY SELECT '3'::text, '4'::text, '5'::text;
 RETURN QUERY SELECT '3'::text, '4'::text, '5'::text;
END
$$;

(बिल्कुल निश्चित नहीं है कि अतिरिक्त ::टेक्स्ट कास्ट की आवश्यकता क्यों है... '1' डिफ़ॉल्ट रूप से एक वर्चर है?)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 11 में सूचकांक परिवर्तन का अवलोकन

  2. पोस्टग्रेज त्रुटि:एक अभिव्यक्ति के रूप में उपयोग की जाने वाली सबक्वेरी द्वारा लौटाई गई एक से अधिक पंक्तियाँ

  3. PostgreSQL में कैशिंग

  4. Postgres - 2 ARRAYs के प्रतिच्छेदन को वापस करने का कार्य?

  5. string_agg () से परिणाम कैसे क्रमबद्ध करें