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

डीओ सैमेंट में क्वेरी से परिणाम प्राप्त करें

आप नहीं DO . से मान लौटाएं बयान। इसके बजाय एक plpgsql फ़ंक्शन बनाएं।

RETURNING . के साथ रिटर्न प्रकार को परिभाषित करने के कई तरीके हैं क्लॉज या OUT . के साथ पैरामीटर। CREATE FUNCTION के बारे में मैनुअल पढ़ें

फ़ंक्शन से मान वापस करने के कई तरीके हैं। अध्याय पढ़ें एक फंक्शन से वापसी मैनुअल में।

विशेष रूप से, चूंकि आप किसी तालिका से पूरी पंक्तियों को वापस करने का प्रयास कर रहे हैं, आप फ़ंक्शन घोषणा के लिए तालिका के पंजीकृत प्रकार का उपयोग कर सकते हैं:

CREATE FUNCTION foo ()
  RETURNING SETOF test_log 
$func$
BEGIN

IF 'a' = 'a' THEN
  RETURN QUERY
  SELECT * FROM test_log LIMIT 10;
ELSE
   RAISE WARNING $$Didn't work!$$;
END IF;

END
$func$ LANGUAGE plpgsql;

कॉल करें:

SELECT * FROM foo ();

या SO पर यहां एक खोज का प्रयास करें। मैंने कई पोस्ट किए संबंधित कोड उदाहरण ।

DO के लिए समाधान कथन

यदि आप किसी फ़ंक्शन का उपयोग नहीं कर सकते हैं, तो DO कथन के साथ केवल आधा समझदार समाधान एक अस्थायी तालिका का उपयोग करना है:

CREATE TEMP TABLE tbl_tmp AS
SELECT * FROM test_log LIMIT 0;

$do$
BEGIN

IF 'a' = 'a' THEN
  INSERT INTO tbl_tmp
  SELECT * FROM test_log LIMIT 10;
ELSE
   RAISE WARNING $$Didn't work!$$;
END IF;

END
$do$ LANGUAGE plpgsql;

SELECT * FROM tbl_tmp;

अस्थायी तालिकाओं को सत्र के अंत में स्वचालित रूप से हटा दिया जाता है ।



  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 डेटाबेस को कहाँ स्टोर करता है?

  2. PostgreSQL पर एक डिफ़ॉल्ट दिनांक प्रारूप सेट करना

  3. कैसे अपने डोकर कंटेनर में psql इंटरैक्टिव निष्पादित करने के लिए?

  4. PHP विंडोज़ पर php_pgsql.dll लोड नहीं कर रहा है

  5. PostgreSQL विभाजन अनुक्रम कैसे बनाएं?