आपके पास जो कार्य है बल्कि होना चाहिए:
CREATE FUNCTION insertdata(varchar(10),varchar(40))
RETURNS VOID AS
$$
INSERT INTO mahasiswa(col_name1, col_name2)
VALUES ($1,$2);
$$
LANGUAGE sql STRICT;
-
भाषा का नाम उद्धृत न करें। यह एक पहचानकर्ता है।
-
हमेशा जारी बयानों के साथ एक लक्ष्य सूची प्रदान करें। अन्यथा, यदि आप बाद में तालिका की परिभाषा बदलते हैं, तो फ़ंक्शन अप्रत्याशित तरीके से व्यवहार कर सकता है।
-
कभी भी
char(n)
. का प्रयोग न करें , जब तक आप नहीं जानते कि आप क्या कर रहे हैं। मैं बसtext
का उपयोग करूंगा ।
एकाधिक पंक्तियाँ सम्मिलित करने के लिए , आप तत्वों की समान संख्या . के साथ मिश्रित प्रकार या दो सरणियों की एक सरणी ले सकते हैं समानांतर में अनस्ट करने के लिए। बाद का प्रदर्शन:
CREATE FUNCTION insertdata(_arr1 text[], _arr2 text[])
RETURNS VOID AS
$$
INSERT INTO mahasiswa(col_name1, col_name2)
SELECT unnest(_arr1), unnest(_arr2);
$$
LANGUAGE sql STRICT;
कॉल करें:
SELECT insertdata ('{1234567890,0987654321}', '{Nahrun,Hartono}');
मैं इसके बजाय एक plpgsql फ़ंक्शन का उपयोग करूंगा और जांच करूंगा कि गलतियों को रोकने के लिए दोनों सरणियों में तत्वों की संख्या समान है। array_length(arr1, 1)
. का उपयोग करें ...
9.4 या बाद के संस्करण पोस्ट करता है ...
... ने अननेस्ट का एक नया संस्करण पेश किया जो समानांतर में कई सरणियों को स्वीकार करता है - उपरोक्त हैक की विचित्रताओं के बिना (कभी भी डिफ़ॉल्ट रूप से CROSS JOIN
नहीं होता है। )
INSERT INTO mahasiswa(col_name1, col_name2)
SELECT * FROM unnest(_arr1, _arr2); -- must be in FROM list