function - Postgresql में वाक्यविन्यास त्रुटि निष्पादित करें




triggers (2)

41.5.2। नतीजे के साथ कमांड निष्पादित करना

कभी-कभी यह अभिव्यक्ति या SELECT क्वेरी का मूल्यांकन करने के लिए उपयोगी होता है, लेकिन परिणाम को त्यागने के लिए, उदाहरण के लिए जब कोई फ़ंक्शन कॉल करता है जिसमें साइड इफेक्ट होते हैं लेकिन कोई उपयोगी परिणाम मान नहीं होता है। पीएल / पीजीएसक्यूएल में ऐसा करने के लिए, PERFORM स्टेटमेंट का उपयोग करें

जोर खान

फ़ंक्शन परिवर्तन के अंदर perform करने के perform select

मैं निष्पादित का उपयोग करते हुए निम्नलिखित क्वेरी निष्पादित करना चाहता हूं, यह चयन के साथ एकदम सही काम करता है, लेकिन जब मैं इसे ट्रिगर में कॉल करता हूं तो मुझे यह त्रुटि मिलती है "त्रुटि: क्वेरी में परिणाम डेटा के लिए कोई गंतव्य नहीं है" मैंने प्रदर्शन करने की कोशिश की लेकिन यह काम नहीं करता है। तालिका में चयन पंक्तियों को चुनें।

select insert_new_grade('title0', return3_6(0), return3_6(1), return3_6(2), s.code)
FROM "student" as s
where find_st(s.grade)>=5;

इसलिए मैंने सोचा है कि मैं EXECUTE है लेकिन मुझे सिंटैक्स त्रुटियाँ मिलती हैं। यहां मेरा प्रयास है:

execute 'insert_new_grade('title0', return3_6(0), return3_6(1), return3_6(2), s.code)
FROM "student" as s
where find_st(s.grade)>=5';

क्या कोई मुझे बता सकता है कि क्या गलत कर रहा है? या ट्रिगर फ़ंक्शन में क्वेरी काम करने का कोई अन्य विचार है? अग्रिम में धन्यवाद..

यहां ट्रिगर है:

CREATE OR REPLACE FUNCTION insert_d() 
RETURNS TRIGGER AS $$ 
BEGIN
    select insert_new_grade('title0', return3_6(0), return3_6(1), return3_6(2), s.code)
    FROM "student" as s
    where find_st(s.grade)>=5;

    return new;
END;
$$ LANGUAGE plpgsql; 

और यहाँ सम्मिलन फ़ंक्शन है:

CREATE OR REPLACE FUNCTION insert_new_diploma(title0 character(100), prof0 character(11), prof1 character(11)) 
RETURNS VOID AS $$
BEGIN
    INSERT INTO "d_table"(thes0, title, grade, prof, secProf) 
    VALUES (null, title0, null, prof0, prof1);
END
$$
LANGUAGE 'plpgsql';

इस स्क्रिप्ट का प्रयोग pgAdmin में करें:

DO $$
DECLARE 
    brow record;
BEGIN
    FOR brow IN (select 'drop table "' || tablename || '" cascade;' as table_name from pg_tables where schemaname = 'public') LOOP
        EXECUTE brow.table_name;
    END LOOP;
END; $$




sql postgresql function triggers