2010-12-15 15 views
14

PostgreSql işlevlerini yeniden düzenlerken (ve daha spesifik: 'kullanılmayan' işlevleri ararken), işlev tanımlarında belirli bir dizeyi aramak için kullanılabilir bir işlev olması kullanışlı olacaktır.PostgreSql işlevleri aracılığıyla 'grep-alike' aramasını yapın

Bunun en iyi yaklaşım olup olmadığını (işlev tanımlarını 'grep'lemek için uğraşmaya çalışmak) ya da alternatif yöntemler mevcut olup olmadığını bilen var mı?

Bu işlev nasıl uygulanır? PostgreSQL bir düzenli ifade kullanma hakkında

cevap

27
SELECT 
    proname AS functionname, 
    prosrc AS source 
FROM 
    pg_proc 
WHERE 
    prosrc ~* 'your_string'; 

Detaylar, manual bulunabilir.

+0

+1 (bu basit ;-) ben diğer yaklaşımlar açılır olmadığını görmek için bir süre bekleyeceğim olabilir fark etmedi ama bu gayet iyi çalışıyor! – ChristopheD

4

Frank'in cevabı harika. ayrıca fonksiyonunu bulmak için yardımcı olur şema listelemek için bu gelişmiş sürümü kullanın:

SELECT 
    proname AS functionname, 
    prosrc AS source, 
    nspname AS schema 
FROM 
    pg_proc 
INNER JOIN pg_namespace ON (pg_proc.pronamespace = pg_namespace.oid) 
WHERE 
    prosrc ~* 'your_string';