SAK }‘ŠÙ
PostgreSQL •Ò22 - PL/pgSQLAƒJ[ƒ\ƒ‹ for ƒ‹[ƒvAƒJ[ƒ\ƒ‹§ŒäAFETCH
¡select into
Eselect into ‚ÍAOracle ‚Ì PL/SQL ‚Æ“¯“™‚Å‚ ‚éB
drop function fnctest1();
create function fnctest1() returns int as
'
declare
ct int;
begin
select count(*) into ct from testm;
raise debug ''count = %'', ct;
return ct;
end;
'
language 'plpgsql'
;
select fnctest1();
DEBUG: count = 4
fnctest1
----------
4
¡ƒJ[ƒ\ƒ‹ for ƒ‹[ƒv
Efor ƒ‹[ƒv‚Å‚Ì select ‚É‚ÍA’Êí‚Ì‚à‚Ì‚ÆAexecute ‚ðŽw’肵‚½“®“I‚È
‚à‚Ì‚ªŽw’è‚Å‚«‚éB
‚±‚ꂪˆê”ÔŠÈ’P‚ɃJ[ƒ\ƒ‹ƒ‹[ƒv‚ðì‚ê‚éB
drop function fnctest1();
create function fnctest1() returns int as
'
declare
rec record;
begin
for rec in select * from testm loop
raise debug ''key = % data1 = %'', rec.key, rec.data1;
end loop;
return 0;
end;
'
language 'plpgsql'
;
select fnctest1();
DEBUG: key = a001 data1 = 1
DEBUG: key = a011 data1 = 1
DEBUG: key = b002 data1 = 10
DEBUG: key = c003 data1 = 100
Efor ƒ‹[ƒv‚Å‚Ì select ‚É execute ‚ðŽw’肵‚½ê‡‚ÍAŽŸ‚̂悤‚ɂȂéB
drop function fnctest1();
create function fnctest1() returns int as
'
declare
rec record;
s varchar(20) := ''testm'';
begin
for rec in execute ''select * from '' || s loop
raise debug ''key = % data1 = %'', rec.key, rec.data1;
end loop;
return 0;
end;
'
language 'plpgsql'
;
¡ƒJ[ƒ\ƒ‹§Œä FETCH
EƒJ[ƒ\ƒ‹§Œä‚É‚àFX‚ȃpƒ^[ƒ“‚ª‚ ‚éB“®“I‚È‚à‚Ì‚Í execute ‚ðŽw’è
‚µ‚Ä—˜—p‚·‚éBŽŸ‚ÍArefcursor ‚ðŽg—p‚µ‚½—á‚Å‚ ‚éB
drop function fnctest1();
create function fnctest1() returns int as
'
declare
cu refcursor;
rec record;
begin
open cu for select * from testm;
loop
fetch cu into rec;
if not found then
exit;
end if;
raise debug ''key = % data1 = %'', rec.key, rec.data1;
end loop;
close cu;
return 0;
end;
'
language 'plpgsql'
;
select fnctest1();
DEBUG: key = a001 data1 = 1
DEBUG: key = a011 data1 = 1
DEBUG: key = b002 data1 = 10
DEBUG: key = c003 data1 = 100
EŽŸ‚ÍAcursor for ‚ðŽg—p‚µ‚½—á‚Å‚ ‚éB
drop function fnctest1();
create function fnctest1() returns int as
'
declare
cu cursor for select * from testm;
rec record;
begin
open cu;
loop
fetch cu into rec;
if not found then
exit;
end if;
raise debug ''key = % data1 = %'', rec.key, rec.data1;
end loop;
close cu;
return 0;
end;
'
language 'plpgsql'
;
EŽŸ‚ÍAcursor is ‚ÅAƒJ[ƒ\ƒ‹ƒpƒ‰ƒƒ^‚ðŽg—p‚µ‚½—á‚Å‚ ‚éB
drop function fnctest1();
create function fnctest1() returns int as
'
declare
cu cursor (sel varchar) is select * from testm where key like sel || ''%'';
rec record;
begin
open cu(''a'');
loop
fetch cu into rec;
if not found then
exit;
end if;
raise debug ''key = % data1 = %'', rec.key, rec.data1;
end loop;
close cu;
return 0;
end;
'
language 'plpgsql'
;
EŽŸ‚ÍAƒJ[ƒ\ƒ‹‚Å“®“I SQL ‚ðŽg—p‚µ‚½—á‚Å‚ ‚éB
drop function fnctest1();
create function fnctest1() returns int as
'
declare
cu refcursor;
rec record;
s varchar(20) := ''testm'';
begin
open cu for execute ''select * from '' || s;
loop
fetch cu into rec;
if not found then
exit;
end if;
raise debug ''key = % data1 = %'', rec.key, rec.data1;
end loop;
close cu;
return 0;
end;
'
language 'plpgsql'
;
¡PostgreSQL •ÒAJAVA ServletAJSP •ÒŽ‘—¿
¡MySQL •ÒŽ‘—¿
¡SQL Šî‘b•ÒŽ‘—¿
¡SQL Šî‘bŽÀ’n•ÒŽ‘—¿
¡SQL ƒ`ƒ…[ƒjƒ“ƒO•ÒŽ‘—¿
¡Oracle PL/SQL •ÒŽ‘—¿