PostgreSQL 8.4 का उपयोग करना, मैं एक समारोह लिखने के लिए कोशिश कर रहा हूँ, और यह इस तरह दिखता है:फिर भी एक और संग्रहीत प्रक्रिया सिंटैक्स त्रुटि - if-then-else
CREATE OR REPLACE FUNCTION addorupdate(smallint, varchar(7)) RETURNS void AS
$$
BEGIN
IF EXISTS (SELECT * FROM consist WHERE slave = $1) THEN
UPDATE consist SET
master = $2
where slave = $1;
ELSE
INSERT INTO consist(slave, master) VALUES ($2, $1);
END IF;
END;
$$
LANGUAGE SQL;
हालांकि, यह इस तरह से विफल रहता है:
ERROR: syntax error at or near "IF"
LINE 4: IF EXISTS (SELECT * FROM consist WHERE slave = $1) THEN
... और मैं यह जानने के लिए बहुत अधिक समय और कैफीन बर्बाद कर रहा हूं कि मेरी मदद करने के लिए ताजा आंखों वाले किसी का उपयोग क्यों कर सकता है।
यदि यह स्पष्ट नहीं है कि मैं क्या हासिल करने की कोशिश कर रहा हूं: दास अद्वितीय मानों का एक स्तंभ है। यदि यह मौजूद है, तो इसे वर्तमान मास्टर के साथ अपडेट करें। यदि नहीं, INSERT।
अद्यतन: बदली गई भाषा plpgsql करने के लिए, और अब यह फेंकता है:
ERROR: language "plpgsql" does not exist
अद्यतन:
CREATE LANGUAGE plpgsql;
(: यह संकल्प :)
फिर आपको 'भाषा बनाने' की आवश्यकता है। या 'पोस्ट बनाएं', जो आपके पोस्टग्रेस्क्ल संस्करण पर निर्भर है। देखें http://www.postgresql.org/docs/9.2/static/sql-createlanguage.html –
क्या यह http://www.postgresql.org/docs/8.4/static/xplang-install.html सहायता करता है? –
@ कॉलिनटहार्ट में मेरे पास pgplplel में pgplsql नहीं था, लेकिन इसके बजाए plpgsql (शीर्ष पर से पहला!) की कोशिश कर रहा था। मदद के लिए चीयर्स! – Jarmund