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

%TYPE . का उपयोग करके PostgreSQL में समग्र प्रकार के चर घोषित करें

<स्ट्राइक>%ROWTYPE का इस्तेमाल करें उस स्थिति में।

संपादित करें - साधारण मामला

एएच और डेविडईजी द्वारा किए गए परीक्षणों से पता चला है कि यह काम नहीं करेगा। दिलचस्प समस्या!
आप एक समाधान का प्रयास कर सकते हैं . जब तक आपकी परिभाषा उदाहरण की तरह है, तब तक आप बस इसका सहारा ले सकते हैं

CREATE FUNCTION test(param1 comp_type)
  RETURNS integer AS
$BODY$ 
DECLARE
    myvar comp_type;
BEGIN
    return 1;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE;

लेकिन आपकी असली समस्या शायद उतनी आसान नहीं है?

संपादित करें 2 - वास्तविक समस्या

जैसा कि अपेक्षित था, वास्तविक समस्या अधिक जटिल है:एक बहुरूपी इनपुट प्रकार .
समाधान उस परिदृश्य के लिए कठिन था, लेकिन त्रुटिपूर्ण ढंग से काम करना चाहिए:

CREATE FUNCTION test(param1 anyelement, OUT a integer, OUT myvar anyelement)
  RETURNS record AS
$BODY$
BEGIN
    myvar := $1;  -- myvar has now the required type.

    --- do stuff with myvar.

    myvar := NULL;  -- reset if you don't want to output ..
    a := 1;
END;
$BODY$
  LANGUAGE plpgsql VOLATILE;

कॉल करें:

SELECT a FROM test('("foo")'::comp_type); -- just retrieve a, ignore myvar

पूरा आउटपुट देखें:

SELECT * FROM test('("foo")'::comp_type);

PostgreSQL 9.0+ के लिए नोट

v9.0 में एक महत्वपूर्ण अपडेट आया है। मैं रिलीज़ नोट को उद्धृत करता हूं :

एर्गो, मेरे समाधान के अलावा, आप सीधे इनपुट चर का उपयोग कर सकते हैं।

गतिशील फ़ाइल नाम




  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. दो तालिकाओं में कैसे शामिल हों, उनमें से एक में प्राथमिक कुंजी नहीं है और समान वर्ण लंबाई नहीं है

  3. PostgreSQL आंशिक अद्वितीय अनुक्रमणिका और अपरर्ट

  4. लेन-देन कार्य के माध्यम से समानांतर आदेशों को संभाल नहीं सकता है। जब सभी

  5. Django के सिंकडीबी (मैक ओएस 10.7.5) चलाते समय पोस्टग्रेस्क्ल सॉकेट त्रुटि