今回は、Oracle・MySQL・PostgreSQL・SQL Serverの各DB上でストアドプログラムを試してみたので、共有する。ストアドプログラムを利用すると、DB上のテーブルへのデータ一括追加を素早く行うことができる。
前提条件
Windows端末上に、Oracle・MySQL・PostgreSQL・SQL Serverをそれぞれインストール済であること。
Oracle・MySQL・PostgreSQLのインストール手順は下記記事を参照のこと。
Windows端末にMySQL、PostgreSQL、Oracleをインストールしてみた今回はいろいろな種類のデータベースを使ってみたかったので、Windows端末に、MySQL、PostgreSQL、Oracleそれぞれの...
また、SQL Serverのインストール手順は下記記事を参照のこと。
SQL Serverのデータ分析を行う環境構築を行った(1)今回は、SQL Serverのデータ分析を行う環境構築として、SQL Server・SQL Server Management Stud...
さらに、各DB上に、以下の構成をもつid_valテーブルを作成済であること。
※写真はMySQLの場合の実行結果

やってみたこと
Oracleの場合の実行結果
1) ストアドプログラム(PL/SQL)の実行結果は以下の通り
begin
for i in 1..10 loop
if (i mod 2 = 0) then
insert into id_val values (i, 'even');
else
insert into id_val values (i, 'odd');
end if;
end loop;
commit;
end;
/
2) ストアドプログラム(PL/SQL)の実行後の結果は以下の通り
select * from id_val

MySQLの場合の実行結果
1) ストアドプログラム(ストアドルーチン)の実行結果は以下の通り
use world;
DELIMITER $$
drop procedure if exists testproc$$
create procedure testproc()
begin
DECLARE i INT;
set i = 1;
while i <= 10 do
if i mod 2 = 0 then
insert into id_val values(i, 'even');
else
insert into id_val values(i, 'odd');
end if;
set i = i + 1;
end while;
commit;
end$$
DELIMITER ;
call testproc();
MySQLの場合は、上記のように、一旦ストアドプロシージャを作成してから実行する必要がある。
2) ストアドプログラム(ストアドルーチン)の実行後の結果は以下の通り
select * from world.id_val;

PostgreSQLの場合の実行結果
1) ストアドプログラム(PL/pgSQL)の実行結果は以下の通り
do $$
begin
for i in 1..10 loop
if i % 2 = 0 then
insert into public.id_val values (i, 'even');
else
insert into public.id_val values (i, 'odd');
end if;
end loop;
end$$;
2) ストアドプログラム(PL/pgSQL)の実行後の結果は以下の通り
select * from public.id_val;

SQL Serverの場合の実行結果
1) ストアドプログラム(Transact-SQL)の実行結果は以下の通り
declare @i int;
declare @val nvarchar(20);
declare @ins_sql varchar(256);
begin
set @i = 1;
while @i <= 10
begin
if @i % 2 = 0
set @val = 'even';
else
set @val = 'odd';
set @ins_sql = 'insert into dbo.id_val values ('
+ STR(@i) + ', ' + '''' + @val + ''');';
execute(@ins_sql);
set @i = @i + 1;
end
end
2) ストアドプログラム(Transact-SQL)の実行後の結果は以下の通り
select * from dbo.id_val;






