PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL RAISE कमांड को गतिशील रूप से कैसे निष्पादित करें

आप RAISE . पर कॉल नहीं कर सकते गतिशील रूप से (EXECUTE . के साथ) ) PL/pgSQL में - जो केवल SQL कथनों के लिए काम करता है, और RAISE एक PL/pgSQL कमांड है।

इसके बजाय इस सरल कार्य का प्रयोग करें:

CREATE OR REPLACE FUNCTION f_raise(text)
  RETURNS void
  LANGUAGE plpgsql AS
$func$
BEGIN
   RAISE EXCEPTION '%', $1;
END
$func$;

कॉल करें:

SELECT f_raise('My message is empty!');

संबंधित:

टिप्पणी का अतिरिक्त जवाब

CREATE OR REPLACE FUNCTION f_raise1(VARIADIC text[])
  RETURNS void
  LANGUAGE plpgsql AS
$func$
BEGIN 
   RAISE EXCEPTION 'Reading % % %!', $1[1], $1[2], $1[3];
END
$func$;

कॉल करें:

SELECT f_raise1('the','manual','educates');
  • VARIADIC एक डेटा प्रकार नहीं है, बल्कि एक तर्क मोड है। ।

  • तत्वों को किसी अन्य सरणी तत्व की तरह संभाला जाना चाहिए।

  • एक RAISE . में एकाधिक चर का उपयोग करने के लिए स्टेटमेंट, कई % डालें संदेश पाठ में।

उपरोक्त उदाहरण विफल हो जाएगा यदि कोई $3 . नहीं है पारित कर दिया गया है। आपको इनपुट तत्वों की परिवर्तनीय संख्या से एक स्ट्रिंग को इकट्ठा करना होगा। उदाहरण:

CREATE OR REPLACE FUNCTION f_raise2(VARIADIC _arr text[]) 
  RETURNS void
  LANGUAGE plpgsql AS 
$func$  
DECLARE
   _msg text := array_to_string(_arr, ' and ');  -- simple string construction
BEGIN  
   RAISE EXCEPTION 'Reading %!', _msg;
END
$func$;

कॉल करें:

SELECT f_raise2('the','manual','educates');

मुझे संदेह है कि आपको VARIADIC की आवश्यकता है इसके लिए पैरामीटर बिल्कुल। मैनुअल यहां पढ़ें .
इसके बजाय, सभी पैरामीटर परिभाषित करें, शायद डिफ़ॉल्ट जोड़ें:

CREATE OR REPLACE FUNCTION f_raise3(_param1 text = ''
                                  , _param2 text = ''
                                  , _param3 text = 'educates')
  RETURNS void
  LANGUAGE plpgsql AS
$func$
BEGIN
   RAISE EXCEPTION 'Reading % % %!', $1, $2, $3;
END 
$func$;

कॉल करें:

SELECT f_raise3('the','manual','educates');

या:

SELECT f_raise3();  -- defaults kick in



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Redshift में पंक्तियों को विभाजित करना

  2. gevent और posgres:अतुल्यकालिक कनेक्शन विफल

  3. एकल होस्ट पर एकाधिक PostgreSQL इंस्टेंस चलाना

  4. तिथियों की एक श्रृंखला के लिए निकटतम रिकॉर्ड

  5. जब डेटाबेस रिकॉर्ड को पोस्टग्रेज करने के लिए लिखा जाता है, तो शेल स्क्रिप्ट चलाएँ