निम्नलिखित घोषणाओं का उपयोग क्या है, और हम इन प्रकार की घोषणाओं का उपयोग कहां करेंगे?postgresql में ROWTYPE, प्रकार, और रिकॉर्ड के बीच मतभेद?
myrow tablename%ROWTYPE;
myfield tablename.columnname%TYPE;
arow RECORD;
निम्नलिखित घोषणाओं का उपयोग क्या है, और हम इन प्रकार की घोषणाओं का उपयोग कहां करेंगे?postgresql में ROWTYPE, प्रकार, और रिकॉर्ड के बीच मतभेद?
myrow tablename%ROWTYPE;
myfield tablename.columnname%TYPE;
arow RECORD;
PostgreSQL's documentation से:
TYPE
एक चर या तालिका स्तंभ के डेटा प्रकार प्रदान करता है। आप उन चरों को घोषित करने के लिए उपयोग कर सकते हैं जो डेटाबेस मान रखेंगे। उदाहरण के लिए, मान लीजिए कि आपके users
तालिका में user_id
नामक कॉलम है। users.user_id
के समान डेटा प्रकार के साथ एक चर घोषित करने के लिए आप लिखते हैं: user_id users.user_id%TYPE;
।
ROWTYPE
: एक समग्र प्रकार के एक चर को पंक्ति चर (या पंक्ति-प्रकार चर) कहा जाता है। इस तरह के एक चर SELECT
या FOR
क्वेरी परिणाम की पूरी पंक्ति रख सकते हैं, जब तक कि क्वेरी का कॉलम सेट वैरिएबल के घोषित प्रकार से मेल खाता हो। पंक्ति मान के अलग-अलग फ़ील्ड को सामान्य डॉट नोटेशन का उपयोग करके एक्सेस किया जाता है, उदाहरण के लिए rowvar.field
।
RECORD
: रिकॉर्ड चर पंक्ति-प्रकार चर के समान हैं, लेकिन उनके पास कोई पूर्वनिर्धारित संरचना नहीं है। वे SELECT
या FOR
कमांड के दौरान निर्दिष्ट पंक्ति की वास्तविक पंक्ति संरचना को लेते हैं। रिकॉर्ड वैरिएबल का सबस्ट्रक्चर प्रत्येक बार इसे आवंटित करने में बदल सकता है। इसका एक परिणाम यह है कि जब तक एक रिकॉर्ड वैरिएबल को पहले निर्दिष्ट नहीं किया जाता है, तब तक इसमें कोई सबस्ट्रक्चर नहीं होता है, और इसमें किसी फ़ील्ड तक पहुंचने का कोई भी प्रयास रन-टाइम त्रुटि खींच लेगा।
अधिक गहन उदाहरणों के लिए लिंक देखें।