psql
पार्सर नहीं देख सकता कि अंदर के तार क्या हैं। यह वही हो सकता है जो आप चाहते हैं:
delete from t
where :para = 1
इसे किसी अनाम ब्लॉक के बाहर करें। अगर आपको वाकई PL/pgSQL
की ज़रूरत है एक पैरामीटरयुक्त फ़ंक्शन का उपयोग करें:
create or replace function f(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
और आपकी स्क्रिप्ट फ़ाइल में निम्न होगा:
select f(:para);
यदि आप डीबी में स्थायी रूप से कोई फ़ंक्शन नहीं जोड़ना चाहते हैं तो यह सब स्क्रिप्ट के अंदर करें:
drop function if exists f_iu7YttW(integer);
create or replace function f_iu7YttW(_para integer)
returns void as $$
begin
if _para = 1 then
--statements
end if;
end; $$ language plpgsql;
select f_iu7YttW(:para);
drop function f_iu7YttW(integer);
फ़ंक्शन को एक अद्वितीय नाम दें ताकि आप कुछ और छोड़ने का जोखिम न उठाएं।