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

Plpgsql में सरणी आयाम पर लूप करें

चूंकि PostgreSQL 9.1 सुविधाजनक FOREACH . है :

DO
$do$
DECLARE
   m   varchar[];
   arr varchar[] := array[['key1','val1'],['key2','val2']];
BEGIN
   FOREACH m SLICE 1 IN ARRAY arr
   LOOP
      RAISE NOTICE 'another_func(%,%)',m[1], m[2];
   END LOOP;
END
$do$

पुराने संस्करणों . के लिए समाधान :

DO
$do$
DECLARE
   arr varchar[] := '{{key1,val1},{key2,val2}}';
BEGIN
   FOR i IN array_lower(arr, 1) .. array_upper(arr, 1)
   LOOP
      RAISE NOTICE 'another_func(%,%)',arr[i][1], arr[i][2];
   END LOOP;
END
$do$

साथ ही, varchar[] . में कोई अंतर नहीं है और varchar[][] PostgreSQL प्रकार प्रणाली के लिए। मैं यहाँ और अधिक विस्तार से समझाता हूँ।

DO स्टेटमेंट के लिए कम से कम PostgreSQL 9.0 और LANGUAGE plpgsql की आवश्यकता होती है डिफ़ॉल्ट है (ताकि आप घोषणा को छोड़ सकें)।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy और कई प्रक्रियाओं के साथ कनेक्शन की समस्या

  2. PostgreSQL में समय क्षेत्र के साथ/बिना टाइमस्टैम्प के बीच अंतर

  3. रेल के साथ WHERE क्लॉज में IN के बजाय किसी का उपयोग कैसे करें?

  4. फ़ंक्शन पैरामीटर सूचियां कैसे प्राप्त करें (इसलिए मैं एक फ़ंक्शन छोड़ सकता हूं)

  5. WHERE क्लॉज में एक कॉलम नाम उपनाम का संदर्भ लें