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

एक संग्रहीत कार्यविधि में एक अनुकूलित विकल्प सेट करना

पहला समाधान

SET . के लिए सिंटैक्स है:

SET [ SESSION | LOCAL ] configuration_parameter { TO | = } { value |'value' | DEFAULT }

जहां value किसी दिए गए configuration_parameter . के लिए नया मान है ।

_user_id . में संग्रहीत मान निर्दिष्ट करने के लिए चर, आपको एक गतिशील कमांड उत्पन्न करने की आवश्यकता है और फिर EXECUTE यह।

ऐसा करने का यह तरीका होगा:

CREATE OR REPLACE FUNCTION set_user(_user_id bigint, is_local boolean default true) 
RETURNS void 
LANGUAGE PLPGSQL
AS $$
BEGIN
  EXECUTE 'SET my.user_id TO ' || quote_nullable(_user_id);
END;
$$;

SQL Fiddle अटैच किया जा रहा है परीक्षण उद्देश्यों के लिए लिंक।

नोट:

  • quote_nullable() फ़ंक्शन NULL लौटाएगा यदि इनपुट तर्क शून्य है। आपके मामले में यह आवश्यक नहीं हो सकता है।

दूसरा समाधान

आप set_config() @a_horse_with_no_name के रूप में कार्य करें। तब आपका कार्य इस तरह दिखेगा:

CREATE OR REPLACE FUNCTION set_user(_user_id bigint, is_local boolean default true) 
RETURNS void 
LANGUAGE PLPGSQL
AS $$
BEGIN
  PERFORM set_config('my.user_id', _user_id::TEXT, false);
END;
$$;

SQL Fiddle अटैच किया जा रहा है परीक्षण उद्देश्यों के लिए लिंक।

नोट:

  • आपको एक वर्चर प्रकार के लिए स्पष्ट रूप से दूसरा तर्क डालना होगा
  • PERFORM किसी व्यंजक का मूल्यांकन करने और परिणाम को त्यागने के लिए प्रयोग किया जाता है क्योंकि इसकी आवश्यकता नहीं है
  • आप उपयोग कर सकते हैं quote_nullable() यहां भी काम करें



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पास कमांड लाइन एसक्यूएल (पोस्टग्रेज) के लिए तर्क देता है

  2. प्रत्येक समूह के लिए पहले रिकॉर्ड की सूची प्राप्त करें

  3. django के लिए डेटाबेस इंजन के रूप में postgres और postgresql_psycopg2 में क्या अंतर है?

  4. क्या एक वर्चर फ़ील्ड के घोषित आकार का PostgreSQL में कोई प्रभाव पड़ता है?

  5. Postgresql कॉलम नहीं मिला, लेकिन वर्णन में दिखाता है