কোনও ফাংশনের মূল অংশটি কেবল স্ট্রিং হিসাবে সংরক্ষণ করা হয় । রেফারেন্সযুক্ত বস্তুর কোনও তালিকা নেই। (এটি দর্শনগুলির চেয়ে পৃথক, উদাহরণস্বরূপ, যেখানে রেফারেন্সযুক্ত সারণীর প্রকৃত লিঙ্কগুলি সংরক্ষণ করা হয়))
পোস্টগ্রিস 10 বা তার বেশি বয়সীদের জন্য এই ক্যোয়ারী প্রাসঙ্গিক ফাংশনগুলির জন্য স্ক্রিপ্টটি পুনর্গঠন করতে সিস্টেম ক্যাটালগ তথ্য ফাংশনpg_get_functiondef()
CREATE FUNCTION
ব্যবহার করে এবং কেস-সংবেদনশীল নিয়মিত অভিব্যক্তি সহ টেবিলের নাম অনুসন্ধান করে:
SELECT n.nspname AS schema_name
, p.proname AS function_name
, pg_get_function_arguments(p.oid) AS args
, pg_get_functiondef(p.oid) AS func_def
FROM pg_proc p
JOIN pg_namespace n ON n.oid = p.pronamespace
WHERE NOT p.proisagg
AND n.nspname NOT LIKE 'pg_%'
AND n.nspname <> 'information_schema'
AND pg_get_functiondef(p.oid) ~* '\mbig\M';
এটি কাজটি করা উচিত, তবে এটি অবশ্যই বুলেট-প্রুফ নয়। এটি গতিশীল এসকিউএল-এর ক্ষেত্রে ব্যর্থ হতে পারে যেখানে টেবিলের নামটি গতিশীলভাবে উত্পন্ন হয় এবং এটি যে কোনও সংখ্যক মিথ্যা ধনাত্মককে ফিরিয়ে দিতে পারে - বিশেষত যদি টেবিলের নামটি একটি সাধারণ শব্দ is
সিস্টেম স্কিমা থেকে সমষ্টিগত কার্য এবং সমস্ত ফাংশন বাদ দেওয়া হয়েছে।
\m
এবং\M
নিয়মিত অভিব্যক্তিতে একটি শব্দের শুরু এবং শেষ চিহ্নিত করুন।
pg_proc
পোস্টগ্রিস ১১-এ পরিবর্তিত সিস্টেম ক্যাটালগটি proisagg
প্রতিস্থাপন করা হয়েছিল prokind
, সত্যিকারের সঞ্চিত পদ্ধতি যুক্ত করা হয়েছিল। আপনার মানিয়ে নেওয়া দরকার। সম্পর্কিত:
EXECUTE
মতো অভিব্যক্তি খুঁজে পাবে না'mm_'||name_parameter
এবং এটি উদ্ধৃত নামগুলির মতো"my""table""
বা কেস-ভাঁজ সহ সঠিকভাবে মোকাবেলা করবে না , তবে এটি বেশিরভাগ মানুষ যা চায় তার বেশিরভাগ ক্ষেত্রেই করবে ।