2017-06-25 7 views
0

、 私はsearch_stringを変更することはできませんので、それは意味がありませんpostgresqlでビューを使用すると引数を渡すことはできますか?例えば

create view search_in_structure as 
select a,b,c,d,e 
from 
    t1 natural inner join t2 natural inner join t3 ... 
where 
    a ilike '%search_string%' 
or b ilike '%search_string%' 
or c ilike '%search_string%' 
or f ilike '%search_string%'; 

、特定の検索のためのビューを作りたいです。それが不可能な場合

select a,b from search_in_structure where search_string='postgresql 4ever'; 

は、どのような解決策は、使用して同じ結果を得るために私をお勧めします:それは適切な修正、何かのようにビューの文を実行しますsearch_stringの値を提供するためのメカニズムはありますか?私は考えることができる 唯一の解決策は、(例えば、search_in_structure (IN search text, OUT a text, OUT b text ...) returns recordを)関数を作成し、それが好き呼び出すために、次のようになります。

select a,b from (select search_in_structure('postgresql 4ever')); 

をしかし、私はまだPostgreSQLのnoobのだと、私は専門家のアドバイスを持っていると思います。

答えて

2

機能は、移動するための方法である:

create function search_in_structure(p_search_value text) 
    returns table (a text, b text, c text, d text) 
as 
$$ 
select a,b,c,d,e 
from t1 
    natural join t2 
    natural join t3 ... 
where 
    a ilike '%'||p_search_value||'%' 
or b ilike '%'||p_search_value||'%' 
or c ilike '%'||p_search_value||'%' 
or f ilike '%'||p_search_value||'%' 
$$ 
language sql; 

次に、あなたが行うことができます:

select * 
from search_in_structure('foobar'); 
+0

温和を!ありがとう@a_horse_with_no_name – user544262772

関連する問題