[pgsql-jp: 34855] IF文でFOR文を切り分けたい

Koyama Manabu sm-bunbun-ll @ mx9.tiki.ne.jp
2005年 2月 9日 (水) 20:17:47 JST


小山といいます。
PostgreSQL7.4.5です。

PL/PgSQLで、"For Loop"文の中で"if〜elseif文"を使いたいのですが、うまくいきま
せん。

以下のようにfunctionを作成し、"> select f1('ヒラ','島根',1);"と実行すると
望み通りの結果が取得できます。
====================================================================
create or replace function f1(text,text,integer) returns setof
ninusi_mastert as '
declare
huri alias for $1;
s_jusyo alias for $2;
jouken alias for $3;
rec record;

begin
if jouken=1 then    --A
for rec in select * from ninusi_mastert where hurigana like ''%'' || huri ||
''%'' loop
return next rec;
end loop;
end if;

if jouken=2 then    --B
for rec in select * from ninusi_mastert where jusyo like ''%'' || s_jusyo ||
''%'' loop
return next rec;
end loop;
end if;
return;
end;
' language plpgsql;
=============================================================
A,Bの所でif文を2つ作れば結果が得られるのですが、これを
if jouken=2 then
<処理>
elseif jouken=2 then
<処理>
end if
という風に出来ないのでしょうか?
end ifの位置が悪いのでしょうか?

<略>
begin
if jouken=1 then
for rec in select * from ninusi_mastert where hurigana like ''%'' || huri ||
''%'' loop
return next rec;
end loop;
elseif jouken=2 then
for rec in select * from ninusi_mastert where jusyo like ''%'' || s_jusyo ||
''%'' loop
return next rec;
end loop;
return;
end if;    ←
end;
' language plpgsql;

"←"のようにすると"syntax error at or near "loop"
と表示されてしまいます。
IF文でFOR文を切り分けたいのですが、
よろしくお願いします。






pgsql-jp メーリングリストの案内