PERFORM
plpgsql कमांड है जिसका उपयोग शून्य कार्यों की कॉल के लिए किया जाता है। PLpgSQL बेकार के बारे में सावधान है SELECT
कथन - SELECT
बिना INTO
. के खंड की अनुमति नहीं है। लेकिन कभी-कभी आपको किसी फ़ंक्शन को कॉल करने की आवश्यकता होती है और आपको परिणाम संग्रहीत करने की आवश्यकता नहीं होती है (या फ़ंक्शन का कोई परिणाम नहीं होता है)। SQL
में फंक्शन SELECT
. के साथ कॉल किया जाता है बयान। लेकिन PLpgSQL में यह संभव नहीं है - इसलिए कमांड PERFORM
पेश किया गया था।
CREATE OR REPLACE FUNCTION foo()
RETURNS void AS $$
BEGIN
RAISE NOTICE 'Hello from void function';
END;
$$ LANGUAGE plpgsql;
-- direct call from SQL
SELECT foo();
-- in PLpgSQL
DO $$
BEGIN
SELECT foo(); -- is not allowed
PERFORM foo(); -- is ok
END;
$$;
PERFORM
कथन एक पैरामीटर निष्पादित करते हैं और परिणाम भूल जाते हैं।
आपका उदाहरण perform 'create table foo as (select 1)';
SELECT 'create table foo as (select 1)'
. यह एक स्ट्रिंग देता है "के रूप में तालिका फू बनाएं (चुनें 1)" और इस स्ट्रिंग को छोड़ दिया जाता है।
EXECUTE
कथन स्ट्रिंग प्राप्त करने के लिए एक अभिव्यक्ति का मूल्यांकन करता है। अगले चरण में इस स्ट्रिंग को निष्पादित किया जाता है।
तो EXECUTE 'create table ' || some_var || '(a int)';
इसके दो चरण हैं
- अभिव्यक्ति का मूल्यांकन करें
'create table ' || some_var || '(a int)'
- अगर
some_var
उदाहरण के लिए mytab है, फिर एक कमांड निष्पादित करेंcreate table mytab(a int)
PERFORM
स्टेटमेंट का उपयोग फ़ंक्शन कॉल के लिए किया जाता है, जब असाइनमेंट स्टेटमेंट में फ़ंक्शन का उपयोग नहीं किया जाता है। EXECUTE
गतिशील SQL के मूल्यांकन के लिए उपयोग किया जाता है - जब रनटाइम में SQL कमांड का एक रूप ज्ञात होता है।