このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/db/1299305530/106
#  ストアドプロシージャについて質問させてください。 
#   
#  簡単な結果を返すクエリ 
#  SELECT A,B,C FROM TEST 
#   
#  といったクエリの結果を戻り値として返すストアドを作成したいのですが 
#  どのように書けば良いのかわかりません。 
#   
#  単一の列のみを返す方法ならわかったのですが、複数列を返す方法が 
#  分からないといった状態です。 
# 

テーブル構造('TEST',1,'A').
テーブル構造('TEST',2,'B').
テーブル構造('TEST',3,'C').

簡単な結果を返すクエリ(_テーブル名,_選択項ならび,_値ならび) :-
        count(テーブル構造('TEST',_,_),Len),
        length(_値ならび,Len),
        findsetof(_,(
                    テーブル構造(_テーブル名,Nth,_)),
                L),
        P =.. [_テーブル|_変数ならび],
        call(P),
        選択項と値の結合(L,_選択項ならび,_値ならび).

選択項と値の結合(_テーブル名,L,[],[]) :- !.
選択項と値の結合(_テーブル名,L,[_選択項|R1],[_値|R2]) :-
        テーブル構造(_テーブル名,Nth,_選択項),
        list_nth(Nth,L,_値),
        選択項と値の結合(_テーブル名,L,R1,R2).