आपका तत्काल उद्धरण एक तरफ मुद्दा (जेफ द्वारा ठीक से संबोधित किया गया है), फ़ंक्शन इस तरह बहुत सरल और तेज़ हो सकता है:
CREATE or REPLACE FUNCTION q11(partial_title text)
RETURNS SETOF text
LANGUAGE plpgsql AS
$func$
BEGIN
RETURN QUERY
SELECT m.title || ' has ' || m.ncrew || ' cast and crew'
FROM movie_makers m
WHERE m.title ~* $1;
IF NOT FOUND THEN
RETURN NEXT 'No matching titles';
END IF;
END
$func$;
प्रमुख बिंदु:
-
आपका कार्य अभी भी टूटा हुआ था।
movie_makers.title
. के सन्दर्भ औरmovie_makers.ncrew
उस तरह से काम नहीं करेगा। मैंने इसे ठीक कर दिया। -
RETURN QUERY
का उपयोग करें लूप के बजाय। इस तरह हमें किसी भी चर का उपयोग करने या घोषित करने की भी आवश्यकता नहीं है। देखें: -
वैकल्पिक रूप से केस असंवेदनशील रेगुलर एक्सप्रेशन मैच ऑपरेटर का उपयोग करें
~*
. (सरल, तेज़ नहीं।)किसी भी तरह से, आप विशेष पात्रों से बचना चाह सकते हैं। देखें:
इसके अलावा:उस दृश्य पर फ़िल्टर करने का शायद ही कोई मतलब है जो पहले से ही 'फाइट क्लब' को अपनी एकमात्र पंक्ति के रूप में चुनता है। सार्थक खोज के लिए, आप इन दृश्यों का उपयोग नहीं करेंगे...