Firebirdで外部データベースのテーブルをSELECTする
私はフリーITエンジニアとして、業務分析、業務改善提案を含む設計、製造、受入検査を含む検査、システム運用開始後の運用改善提案など、様々な分野を担当しています。
Firebirdで外部データベースのテーブルをSELECTする方法を紹介します。
(実際の使用例です)
次のようなストアドプロシージャを作成してください。
SET TERM !!;
CREATE
OR
ALTER
PROCEDURE sp_select_m01_personal_base
(
v_database varchar(255) /* 外部データベースのパス */
,v_user varchar(255) /* USER */
,v_password varchar(255) /* PASSWORD */
)
RETURNS(
v_personal_id char(10) /* 個人ID */
,v_person_name varchar(20) /* 氏名 */
,v_login_id varchar(20) /* ログインID(ランダムに自動生成) */
,v_picture_taking_day timestamp /* 写真撮影日時 */
,v_person_name_kana varchar(30) /* 氏名ふりがな */
,v_member_class char(1) /* '1'~'9' */
)
AS
DECLARE v_command varchar(255);
BEGIN
v_command = 'SELECT personal_id,person_name,login_id,picture_taking_day,person_name_kana,member_class FROM m01_personal_base;';
FOR EXECUTE STATEMENT :v_command
ON EXTERNAL DATA SOURCE :v_database
AS USER :v_user
PASSWORD :v_password
INTO
:v_personal_id -- ,personal_id
,:v_person_name -- ,person_name
,:v_login_id -- ,login_id
,:v_picture_taking_day -- ,picture_taking_day
,:v_person_name_kana -- ,person_name_kana
,:v_member_class -- ,member_class
DO BEGIN
SUSPEND;
END
END
!!
SET TERM ;!!
v_command に代入しているSELECT文が外部のデータベースに対して発行するものになります。
このSELECT文で得られるデータをストアドプロシージャで返す形になります。
このストアドプロシージャはSELECT文でテーブルのように扱えるので、他のテーブルとのJOINも可能です。
この基本形を覚えておけば、応用は容易です。