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

क्या PostgreSQL में स्ट्रिंग मान (जैसे eval) के अंदर किसी क्वेरी को निष्पादित करने का कोई तरीका है?

यदि आप जिन कथनों को "eval" करने का प्रयास कर रहे हैं, वे हमेशा एक ही डेटा प्रकार लौटाते हैं, तो आप एक eval() फ़ंक्शन लिख सकते हैं जो Grzegorz द्वारा उल्लिखित EXECUTE का उपयोग करता है।

create or replace function eval(expression text) returns integer
as
$body$
declare
  result integer;
begin
  execute expression into result;
  return result;
end;
$body$
language plpgsql

तब आप कुछ ऐसा कर सकते हैं

SELECT eval('select 41') + 1;

लेकिन यह तरीका काम नहीं करेगा यदि आपके डायनामिक स्टेटमेंट प्रत्येक एक्सप्रेशन के लिए कुछ अलग लौटाते हैं जिसका आप मूल्यांकन करना चाहते हैं।

यह भी ध्यान रखें कि यह मनमाने बयानों को चलाकर एक बड़ा सुरक्षा जोखिम खोलता है। यदि यह एक समस्या है तो यह आपके पर्यावरण पर निर्भर करता है। यदि इसका उपयोग केवल इंटरैक्टिव SQL सत्र में किया जाता है तो यह कोई समस्या नहीं है।



  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. PostgreSQL रेगेक्स वर्ड सीमाएं?

  4. पोस्टग्रेज में संकुल सूचकांक के बारे में

  5. डायनेमिक क्वेरी फंक्शन को पोस्टग्रेज करता है