(Microsoft Word - Lab5-PLSQL\203I\203u\203W\203F\203N\203g\202\314\210\332\215s.doc)

Size: px
Start display at page:

Download "(Microsoft Word - Lab5-PLSQL\203I\203u\203W\203F\203N\203g\202\314\210\332\215s.doc)"

Transcription

1 [Lab 5] PLSQL オブジェクトの移行 2009 年 12 月日本アイアイ ビービー エムエム株式会社

2 Contents CONTENTS はじめに ハンズオンで使用する DDL について 独立したしたタイプタイプの宣言 スタンドアロン タイプの移行 パッケージ Envelope の作成 タイプを参照する箇所の修正 パッケージの作成 パッケージ ACCOUNT_PACKAGE の作成 AVERAGE_BNAD 関数の作成 パッケージ仕様部の作成 パッケージ本体の作成 パッケージ OFFICE_PACKAGE の作成 パッケージ仕様部の作成 パッケージ本体の作成 プロシージャーの作成 COUNT_PROJECTS のパラメーター確認 COUNT_PROJECTS のプロシージャーへの書き直し COUNT_PROJECTS プロシージャーの作成 ADD_NEW_EMPLOYEE プロシージャーの作成 ASSIGN_EMPLOYEE_TO_NEW_ACCOUNT プロシージャーの作成 VIEW の作成 トリガーの作成 Update_Departments トリガーの作成 UPDATE_ACC_ON_NEW_EMPL トリガーの作成

3 1. はじめに このハンズオンでは Oracle から抽出した DDL を元に DB2 への投入を行い PLSQL のプロシージャーや関数を作成します このハンズオンで行う作業は下記となります パッケージの作成 プロシージャーの作成 関数の作成 ビューの作成 トリガーの作成 このハンズオンで使用するディレクトリーの構成は下記の様になっています PLSQL のオブジェクトを作成するための DDL は workshoplab5plsql_ddl を参照してください workshop lab5 :Anonymous block など plsql_ddl :Lab5 で使う PLSQL DDL 作業フォルダ plsql_ddl_modified : 変更済み DDL 1.1 ハンズオンで使用使用する DDL について このハンズオンで使用する DDL は Oracle から IBM Data Movement Tool を使用して抽出したものです Data Movement Tool は DDL 抽出の際 オブジェクトの種別ごとファイルを作成します そのため 一つの DDL ファイルには複数のオブジェクトの DDL が格納されます 例えば 一つのファイルに複数のオブジェクトが格納されている場合 ハンズオンの手順が煩雑となるため このハンズオン中では下記の様にして オリジナルの DDL ファイルをオブジェクトごとに分割しています オリジナルの DDL: db2plsql_package.db2 分割した DDL: db2plsql_package.db2.account_package db2plsql_package.db2.envelope db2plsql_package.db2.office_package 分割された DDL は workshoplab5plsql_ddl ディレクトリに格納されています 3

4 2. 独立したしたタイプタイプの宣言 このセクションでは スタンドアロン タイプを取り扱います スタンドアロン タイプ とは PLSQL オブジェクトとして作成されるタイプの中で パッケージ中で宣言されるのではなく 独立して宣言されるものです このハンズオンには 1 つのスタンドアロン タイプが含まれます IBM Data Movement Tool は下記の 2 つのファイルにスタンドアロン タイプを抽出します db2plsql_type.db2 db2plsql_type_body.db2 DB2 9.7 はスタンドアロン タイプをサポートしていないため 別のオブジェクトとして作成する必要があります 移行先のオブジェクトとして パッケージが使用可能です パッケージは プロシージャーやファンクション タイプや変数の宣言をまとめて取り扱うための単位となります パッケージの一要素としてタイプを宣言することで 独立したタイプと同様にタイプの作成が可能になります ただし そのタイプを使用する際はパッケージの名称をスキーマ ( 修飾子 ) として追加する必要があります 2.1 スタンドアロン タイプタイプの移行 このステップではスタンドアロン タイプをパッケージに移行します 移行先のパッケージとしてパッケージ ENVELOPE を使用します 下記に示す様に このパッケージは変数宣言のみを含んでいます 移行元となるスタンドアロン タイプ EMP_INFO_TYPE の DDL は db2plsql_type.db2 に含まれています このタイプ宣言を パッケージ ENVELOPE の中へ移行します 下記のコマンドを実行して EMP_INFO_TYPE の DDL を確認してください cd workshoplab5plsql_ddl cat db2plsql_type.db2 実行例 db2inst1@db2v97onsles10:workshoplab5> cd workshoplab5plsql_ddl db2inst1@db2v97onsles10:workshoplab5plsql_ddl> cat db2plsql_type.db2 --#SET TERMINATOR CONNECT TO LABDB SET CURRENT SCHEMA = 'SALES' --#SET :TYPE:SALES:EMP_INFO_TYPE CREATE OR REPLACE TYPE "SALES"."EMP_INFO_TYPE" AS OBJECT ( EMP_ID NUMBER(5), FIRST_NAME VARCHAR2(20), LAST_NAME VARCHAR2(20), BAND CHAR(1), HIRE_DATE TIMESTAMP(3)) < 省略 > 4

5 _ パッケージ ENVELOPE へのタイプ宣言追加スタンドアロン タイプをパッケージ中のタイプ宣言に移行する際は 下記の様な変更を行ってください CREATE OR REPLACE キーワードの除去 SALES スキーマの除去 AS OBJECT キーワードを IS RECORD へ変更 宣言の最終部分を から ;( セミコロン ) へ変更 パッケージ ENVELPE の変更は下記の手順で行います 1.vi エディターでパッケージ ENVELOPE の DDL ファイルを開きます vi db2plsql_package.db2.envelope 2.db2plsql_type.db2 ファイルから EMP_INFO_TYPE の DDL をコピーします 3. 前述の変更を行います 変更例 --#SET TERMINATOR CONNECT TO LABDB SET CURRENT SCHEMA = 'SALES' --#SET :PACKAGE:SALES:ENVELOPE CREATE OR REPLACE PACKAGE "SALES"."ENVELOPE" AS -- * DESCRIPTION: The package to store the declaration of types * -- type declaration TYPE RCT1 IS REF CURSOR; -- add type declaration for standalone type TYPE "EMP_INFO_TYPE" IS RECORD ( EMP_ID NUMBER(5), FIRST_NAME VARCHAR2(20), LAST_NAME VARCHAR2(20), BAND CHAR(1), HIRE_DATE TIMESTAMP(3)); END ENVELOPE; TERMINATE このハンズオンでは vi エディターを使用して DDL を編集することを想定していますが 時間のない方や vi の操作に不慣れな方は workshoplab5plsql_ddl_modified ディレクトリーに修正済みの DDL がありますので こちらを使用していただく事も可能です このハンズオンで今後登場する DDL は 全て同様に修正済みの DDL が格納されています 5

6 2.2 パッケージ Envelope の作成 前ステップで DDL の変更が完了したので パッケージ ENVELOPE を作成します 下記のコマンドを実行して パッケージを作成してください db2 -tvf db2plsql_package.db2.envelope 実行例 workshoplab5plsql_ddl_modified> db2 -tvf db2plsql_package.db2.envelope < 省略 > SET CURRENT SCHEMA = 'SALES' CREATE OR REPLACE PACKAGE "SALES"."ENVELOPE" AS -- * DESCRIPTION: The package to store the declaration of types * -- type declaration TYPE RCT1 IS REF CURSOR; -- add type declaration for standalone type TYPE "EMP_INFO_TYPE" IS RECORD ( EMP_ID NUMBER(5), FIRST_NAME VARCHAR2(20), LAST_NAME VARCHAR2(20), BAND CHAR(1), HIRE_DATE TIMESTAMP(3)); END ENVELOPE; TERMINATE DB20000I TERMINATE コマンドが正常に完了しました 2.3 タイプを参照参照するする箇所箇所の修正 EMP_INFO_TYPE を ENVELOPE パッケージ内での宣言に変更したことで EMP_INFO_TYPE を参照する際には ENVELOPE を修飾子として追加する必要があります 下記のコマンドを実行して 移行対象の PLSQL オブジェクトから EMP_INFO_TYPE を参照している部分を確認してください cd workshoplab5plsql_ddl head db2plsql* egrep -i "^== EMP_INFO_TYPE" このコマンドは db2plsql をファイル名に持つファイルから EMP_INFO_TYPE を含む行を抽出します 6

7 コマンド実行例 > cd workshoplab5plsql_ddl workshoplab5plsql_ddl> head db2plsql* egrep -i "^== EMP_INFO_TYPE" ==> db2plsql_function.db2.average_band <== ==> db2plsql_function.db2.count_projects <== ==> db2plsql_package.db2.account_package <== ==> db2plsql_package.db2.envelope <== ==> db2plsql_package.db2.office_package <== ==> db2plsql_package_body.db2.account_package <== ==> db2plsql_package_body.db2.office_package <== ==> db2plsql_procedure.db2.add_new_employee <== o_employee OUT EMP_INFO_TYPE, ==> db2plsql_procedure.db2.assign_employee_to_new_account <== ==> db2plsql_procedure.db2.get_employee_resume <== ==> db2plsql_trigger.db2.update_acc_on_new_empl <== ==> db2plsql_trigger.db2.update_departments <== ==> db2plsql_type.db2 <== --#SET :TYPE:SALES:EMP_INFO_TYPE CREATE OR REPLACE TYPE "SALES"."EMP_INFO_TYPE" AS OBJECT ( ==> db2plsql_type_body.db2 <== ==> db2plsql_views.db2.organization_structure <== この結果から EMP_INFO_TYPE を参照するオブジェクトは プロシージャー ADD_NEW_EMPLOYEE のみであることがわかります vi エディターを使用して DDL ファイル db2plsql_procedure.db2.add_new_employee を開き ENVELOPE パッケージ中の EMP_INFO_TYPE への参照が問題なく行えるよう ADD_NEW_EMPLOYEE 中の該当行を編集し ENVELOPE を追加してください vi db2plsql_procedure.db2.add_new_employee 編集前編集後 : o_employee OUT EMP_INFO_TYPE, : o_employee OUT ENVELOPE.EMP_INFO_TYPE, ここで編集した DDL は 後続のステップで使用します 7

8 3. パッケージの作成 この章では パッケージの作成を行います 先ほどの演習でも登場しましたが パッケージとはプロシージャーや関数 タイプや変数の宣言を一括で取り扱うための単位です パッケージは パッケージ仕様部およびパッケージ本体という 2 つの主要コンポーネントで構成されます パッケージ仕様部はパッケージの外部に対して公開されたパブリック インターフェースで 当該パッケージの外部から参照可能な要素で構成されます パッケージ仕様部を作成するには CREATE PACKAGE ステートメントを実行します パッケージ本体には パッケージ仕様部内で宣言されたプロシージャーおよび関数の 実際の振る舞いを定義するための実装を記述します また それ以外にもパッケージ気外部に公開しないプライベートのタイプ 変数 およびカーソルの宣言を行うことができます パッケージ本体を作成するには CREATE PACKAGE BODY ステートメントを実行します この章では 下記に示す 2 つのパッケージを作成します ACCOUNT_PACKAGE OFFICE_PACKAGE 3.1 パッケージ ACCOUNT_PACKAGE の作成 パッケージ ACCOUNT_PACKAGE を作成します このパッケージは パッケージの前が示す様に ACCOUNT データを取り扱う処理をひとまとめにして管理しています パッケージのメンバーとしては下記の 4 つのプロシージャー Add_Account Remove_Account Account_List Display_Account_List 及び タイプ customer_name_cache を含みます 前述したように どのような要素を含むかはパッケージ本体を見ることでわかります ACCOUNT_PACKAGE のパッケージ本体は db2plsql_package.db2.account_package に格納されています AVERAGE_BNAD 関数の作成 ACCOUNT_PACKAGE のメンバーの一つ Display_Account_List プロシージャーでは AVERAGE_BNAD 関数を参照しています そのため AVERAGE_BNAD 関数を先に作成します この関数は 部署コードとアカウントコードを引数として受け取り 該当の部署コード アカウントコードを持つ従業員を EMPLOYEES 表から検索した上で 職位の平均を戻します 8

9 AVERAGE_BNAD 関数の DDL --#SET TERMINATOR CONNECT TO LABDB SET CURRENT SCHEMA = 'SALES' --#SET :FUNCTION:SALES:AVERAGE_BAND CREATE OR REPLACE FUNCTION "SALES"."AVERAGE_BAND" (p_department IN employees.dept_code%type, p_acct_id IN employe es.acct_id%type) RETURN CHAR AS -- variable declaration v_averageband CHAR(1); v_numericband NUMBER; v_totalband NUMBER:=0; v_numberemployees NUMBER; -- CURSOR declaration CURSOR c_employees IS SELECT band FROM employees WHERE dept_code = p_department AND acct_id = p_acct_id; OPEN c_employees; LOOP FETCH c_employees INTO v_numericband; EXIT WHEN c_employees%notfound; v_totalband := v_totalband + v_numericband; END LOOP; v_numberemployees:=c_employees%rowcount; IF(v_NumberEmployees = 0) THEN RAISE_APPLICATION_ERROR(-20001, 'No employees exist for ' p_department ' ' p_acct_id); END IF; SELECT DECODE(ROUND(v_TotalBandv_NumberEmployees), 5, 'A', 4, 'B', 3, 'C', 2, 'D', 1, 'E') INTO v_averageband FROM dual; RETURN v_averageband; END Average_Band; この関数は ソースコードの変更無しにそのまま DB2 で作成可能です 下記のコマンドを使用して AVERAGE_BNAD 関数を作成してください db2 -tvf db2plsql_function.db2.average_band 9

10 実行例 $ db2 -tvf db2plsql_function.db2.average_band < 省略 > CREATE OR REPLACE FUNCTION "SALES"."AVERAGE_BAND" (p_department IN employees.dept_code%type, p_acct_id IN employe es.acct_id%type) < 省略 > RETURN v_averageband; END Average_Band; DB20000I SQL コマンドが正常に完了しました この関数が正常に作成できたことを workshoplab5 ディレクトリで下記のスクリプトで確認してください db2 -tvf call.average_band.clp このスクリプトは 下記の様な無名ブロックを含みます この無名ブロックでは部署コード A00 アカウントコード 1 を引数として AVERAGE_BNAD 関数を呼び出します 下記の実行例のように 結果として C 1 文字が返却されれば成功です 実行例 $ cd workshoplab5 $ db2 -tvf call.average_band.clp < 省略 > DECLARE str CHAR(30); str := SALES.AVERAGE_BAND('A00',1); DBMS_OUTPUT.PUT_LINE(str); END; C TERMINATE DB20000I TERMINATE コマンドが正常に完了しました パッケージ仕様部仕様部の作成 ACCOUNT_PACKAGE のパッケージ仕様部を作成します パッケージ仕様部は下記の様な DDL となります 10

11 ACCOUNT_PACKAGE パッケージ宣言部の DDL CREATE OR REPLACE PACKAGE "SALES"."ACCOUNT_PACKAGE" AS -- type declaration TYPE customer_name_cache IS TABLE OF Employees%ROWTYPE INDEX BY PLS_INTEGER; -- PROCEDURE declaration PROCEDURE Add_Account(p_AccountId IN accounts.acct_id%type, p_deptcode IN accounts.dept_code%type, p_accountdesc IN accounts.acct_desc%type, p_maxemployees IN accounts.max_employees%type); PROCEDURE Remove_Account(p_AccountId IN accounts.acct_id%type, p_deptcode IN accounts.dept_code%type); PROCEDURE Account_List(p_dept_code IN accounts.dept_code%type, p_acct_id IN accounts.acct_id%type, p_employees_name_cache OUT Customer_Name_Cache); PROCEDURE Display_Account_List(p_dept_code IN accounts.dept_code%type, p_acct_id IN accounts.acct_id%type); END Account_Package; 下記のコマンドを実行して パッケージ仕様部を作成してください db2 -tvf db2plsql_package.db2.account_package 正常にパッケージ仕様部が作成されれば がメッセージとして返却されます ここでは作成の確認は行わず パッケージ本体の作成に進みます パッケージ本体本体の作成 パッケージ本体の DDL は db2plsql_package_body.db2.account_package ファイルに格納されています パッケージ本体についても Oracle で稼働していた PLSQL のロジックがそのまま使用できます ただし パッケージ本体に含まれるプロシージャー中で参照している関数 (AVERAGE_BAND) の名前解決をするため 関数の検索順序に SALES スキーマを追加する必要があります _ パッケージ本体の DDL 修正 vi エディターから db2plsql_package_body.db2.account_package ファイルを開き 下記の DDL のように SET CURRENT PATH = SALES, CURRENT PATH を追加してください ACCOUNT_PACKAGE パッケージ本体の DDL( 一部抜粋 ) 11

12 $ cat db2plsql_package_body.db2.account_package --#SET TERMINATOR CONNECT TO LABDB SET CURRENT SCHEMA = 'SALES' SET CURRENT PATH = SALES, CURRENT PATH --#SET :PACKAGE_BODY:SALES:ACCOUNT_PACKAGE CREATE OR REPLACE PACKAGE BODY "SALES"."ACCOUNT_PACKAGE" AS PROCEDURE Add_Account(p_AccountId IN accounts.acct_id%type, p_deptcode IN accounts.dept_code%type, p_accountdesc IN accounts.acct_desc%type, p_maxemployees IN accounts.max_employees%type) IS < 省略 > _ パッケージ本体の作成修正が完了した後 下記のコマンドを使用してパッケージ本体を作成してください db2 -tvf db2plsql_package_body.db2.account_package 正常にパッケージ本体が作成されれば がメッセージとして返却されます 12

13 _ パッケージの稼働確認 ACCOUNT_PACKAGE のメンバーの一つ プロシージャー Display_Account_List を動かしてみることで パッケージの稼働確認を行います workshoplab5 ディレクトリで下記のコマンドを実行してください db2 -tvf call.display_account_list.clp このコマンドは 下記の様なスクリプトを含んでいます CONNECT TO LABDB; SET SQLCOMPAT PLSQL; SET CURRENT SCHEMA SALES; SET SERVEROUTPUT ON; sales.account_package.display_account_list( 'C01', 3 ); END; TERMINATE; END で囲まれた部分が無名ブロックを構成しており ここから Display_Account_List を呼び出しています 実行例 db2inst1@db2v97onsles10:> cd workshoplab5 db2inst1@db2v97onsles10:workshoplab5> db2 -tvf call.display_account_list.clp < 省略 > SET SERVEROUTPUT ON DB20000I SET SERVEROUTPUT コマンドが正常に完了しました sales.account_package.display_account_list( 'C01', 3 ); END; List of employees Record id : 1 Employee : KWAN Number of projects : 1 Average Band in department : C Record id : 2 Employee : QUINTANA Number of projects : 2 Average Band in department : C Record id : 3 Employee : NICHOLLS Number of projects : 4 Average Band in department : C Record id : 4 Employee : NATZ Number of projects : 1 Average Band in department : C TERMINATE DB20000I TERMINATE コマンドが正常に完了しました 上記のように 4 エントリー分の社員情報が表示されれば正常に稼働しています 13

14 3.2 パッケージ OFFICE_PACKAGE の作成 このステップでは パッケージ OFFICE_PACKAGE を作成します このパッケージは OFFICE 表に対するデータの登録と削除を行うプロシージャーを含んでいます パッケージのメンバーは下記の 2 プロシージャーです Add_Office Remove_Office 先ほど作成した ACCOUNT_PACKAGE では PLSQL のソースコードはそのまま使用できましたが この OFFICE_PACKAGE は そのままでは DB2 上で作成できない記述を含んでいます 次ページに表示した Remove_Office プロシージャーの青字部分がそれに該当します Remove_Office プロシージャーはパッケージ OFFICE_PACKAGE に属するパッケージですが 自分自身の内部に別の関数 CHECK_EMP_EXISTANCE の宣言を含んでいます CHECK_EMP_EXISTANCE は 削除対象のレコードが存在するかどうかを確認する関数として定義されており Remove_Office プロシージャーからの内部からのみ参照できる関数です このように 関数やプロシージャーの内部で宣言される関数 及びプロシージャーを ネストされた関数 ネストされたプロシージャー と呼び DB2 9.7 ではサポートされていません そのため このような関数やプロシージャーを DB2 に対して作成するためには ネストされた関数やプロシージャー部分を分離して 独立した関数もしくはプロシージャーとして作成する必要があります 独立したオブジェクトとして作成する際に考慮する必要があるのは下記の 2 点です 1. 関数名 プロシージャー名の重複ネストされた関数 プロシージャーは その定義を含む関数やプロシージャーの内部からしか参照できません そのため 例えば 別々のプロシージャーの中に定義されたネストされた関数が同じ名前であったとしても問題ありません 独立したオブジェクトとして作成する場合 一つのスキーマ配下に同じ名前の関数は一つしか存在できません そのため どちらかの名前を変更する必要があります また 名前を変更した関数については 呼び出し元のソースコードについても変更する必要があります 2. 変数の共有についてネストされた関数 プロシージャーと その定義を含む関数やプロシージャーでは 変数を共有することが可能です ところが 独立したオブジェクト同士では変数の共有ができません 上記の課題を解決するために推奨される方策は パッケージへの変更 です パッケージを使用した場合 パッケージ仕様部のメンバーとしてグローバル変数を宣言することで 複数の関数やプロシージャーから変数を共有することが可能です 14

15 db2plsql_package_body.db2.office_package の抜粋 ( プロシージャー Remove_Office ) PROCEDURE Remove_Office(p_office_id IN offices.office_id%type) IS -- * DESCRIPTION: Removes the Office from database based on the office id -- EXAMPLE: EXEC OFFICE_PACKAGE.REMOVE_OFFICE(1) * -- variable declaration v_existance number; -- exception declaration e_officenotregistered EXCEPTION; PRAGMA EXCEPTION_INIT (e_officenotregistered, ); -- * DESCRIPTION: Function declaration for checking * FUNCTION CHECK_EMP_EXISTANCE ( p_office_id IN offices.office_id%type) RETURN NUMBER AS -- variable declaration v_count NUMBER; v_flag NUMBER; SELECT count(*) INTO v_count from EMPLOYEES WHERE OFFICE_ID = p_office_id; IF ( v_count!= 0 ) THEN v_flag := 1; ELSE v_flag := 0; END IF; RETURN v_flag; END CHECK_EMP_EXISTANCE; -- Checking the parameter value v_existance := CHECK_EMP_EXISTANCE (p_office_id); IF ( v_existance = 1 ) THEN DBMS_OUTPUT.PUT_LINE('Office ID ' p_office_id ' has employee.'); RETURN; END IF; -- Execute deleting DELETE FROM offices WHERE office_id = p_office_id; IF SQL%NOTFOUND THEN RAISE e_officenotregistered; END IF; EXCEPTION WHEN e_officenotregistered THEN DBMS_OUTPUT.PUT_LINE('Office ' p_office_id ' does not exist.'); WHEN others THEN RAISE e_officenotregistered; END Remove_Office; 15

16 3.2.1 パッケージ仕様部仕様部の作成 前述の通り OFFICE_PACKAGE を DB2 で作成するために ネストされた関数 CHECK_EMP_EXISTANCE を 独立した関数に変更します パッケージ仕様部で宣言するメンバーは下記の様に変更となります 変更前 : Add_Office( プロシージャー ) Remove_Office( プロシージャー ) 変更後 Add_Office( プロシージャー ) Remove_Office( プロシージャー ) CHECK_EMP_EXISTANCE( 関数 ) _DDL の編集 vi エディターで db2plsql_package.db2.office_package ファイルを開き CHECK_EMP_EXISTANCE 関数の記述を追加してください 変更例 --#SET TERMINATOR CONNECT TO LABDB SET CURRENT SCHEMA = 'SALES' --#SET :PACKAGE:SALES:OFFICE_PACKAGE CREATE OR REPLACE PACKAGE "SALES"."OFFICE_PACKAGE" AS -- PROCEDURE declaration PROCEDURE Add_Office(p_office_id IN offices.office_id%type, p_building IN offices.building%type, p_number_seats IN offices.number_seats%type, p_description IN offices.description%type); PROCEDURE Remove_Office(p_office_id IN offices.office_id%type); -- FUNCTION declaration FUNCTION CHECK_EMP_EXISTANCE ( p_office_id IN offices.office_id%type) RETURN NUMBER; END OFFICE_PACKAGE; _ パッケージ仕様部の作成 DDL の編集が完了した後に 下記のコマンドを使用してパッケージ仕様部を作成してください db2 -tvf db2plsql_package.db2.office_package DB20000I メッセージが返却されれば パッケージ仕様部の作成は成功です 16

17 3.2.2 パッケージ本体本体の作成 次に パッケージ本体を作成します パッケージ本体では Remove_Office プロシージャーからネストされた関数の記述を除去し 独立した関数として作成する必要があります _DDL の編集 vi エディターから db2plsql_package_body.db2.office_package ファイルを開き 下記の変更を行ってください Remove_Office プロシージャーからネストされた関数 CHECK_EMP_EXISTANCE の記述を除去 Remove_Office プロシージャーと同列に CHECK_EMP_EXISTANCE 関数のソースコードを移動 次ページに変更後の DDL を抜粋して掲載します 青字となっている部分が新たに追加された記述となります また Remove_Office プロシージャーから FUNCTION 定義が除去されていることがわかります 17

18 db2plsql_package_body.db2.office_package の変更後の DDL( 抜粋 ) CREATE OR REPLACE PACKAGE BODY "SALES"."OFFICE_PACKAGE" AS < 省略 > PROCEDURE Remove_Office(p_office_id IN offices.office_id%type) IS -- variable declaration v_existance number; -- exception declaration e_officenotregistered EXCEPTION; PRAGMA EXCEPTION_INIT (e_officenotregistered, ); -- Checking the parameter value v_existance := CHECK_EMP_EXISTANCE (p_office_id); IF ( v_existance = 1 ) THEN DBMS_OUTPUT.PUT_LINE('Office ID ' p_office_id ' has employee.'); RETURN; END IF; -- Execute deleting DELETE FROM offices WHERE office_id = p_office_id; IF SQL%NOTFOUND THEN RAISE e_officenotregistered; END IF; EXCEPTION WHEN e_officenotregistered THEN DBMS_OUTPUT.PUT_LINE('Office ' p_office_id ' does not exist.'); WHEN others THEN RAISE e_officenotregistered; END Remove_Office; -- * DESCRIPTION: Function declaration for checking * FUNCTION CHECK_EMP_EXISTANCE ( p_office_id IN offices.office_id%type) RETURN NUMBER AS -- variable declaration v_count NUMBER; v_flag NUMBER; SELECT count(*) INTO v_count from EMPLOYEES WHERE OFFICE_ID = p_office_id; IF ( v_count!= 0 ) THEN v_flag := 1; ELSE v_flag := 0; END IF; RETURN v_flag; END CHECK_EMP_EXISTANCE; END OFFICE_PACKAGE; 18

19 _ パッケージ本体の作成 DDL の編集が完了した後に 下記のコマンドを使用してパッケージ本体を作成してください db2 -tvf db2plsql_package_body.db2.office_package 正常にパッケージ本体が作成されれば DB20000I メッセージが返却されます _ パッケージの稼働確認下記のスクリプトを使用して パッケージが正常に稼働しているかどうかを確認します cd workshoplab5 db2 -tvf call.office_package.clp このスクリプトは下記の様な SQL を含んでおり Add_Office プロシージャーと Remove_Office プロシージャーを使用してオフィスの登録と削除を行います SELECT * FROM OFFICES; sales.office_package.add_office( 3, '46 E. Main Street', 2, 'Temporary office in Hotel'); END SELECT * FROM OFFICES; sales.office_package.remove_office( 3); END SELECT * FROM OFFICES; 正常にパッケージが作成されている場合 次ページの実行例のようにオフィス ID=3 のオフィスが追加 削除されることが確認できます 19

20 OFFICE_PACKAGE の実行例 db2 -tvf call.office_package.clp < 省略 > SELECT * FROM OFFICES OFFICE_ID BUILDING NUMBER_SEATS DESCRIPTION Offshore Drive 30. Main small office rented by the company Park Avenue 40. Additional facility for new hires 2 レコードが選択されました sales.office_package.add_office( 3, '46 E. Main Street', 2, 'Temporary office in Hotel'); END Office 46 E. Main Street successfully registered. SELECT * FROM OFFICES OFFICE_ID BUILDING NUMBER_SEATS DESCRIPTION Offshore Drive 30. Main small office rented by the company Park Avenue 40. Additional facility for new hires E. Main Street 2. Temporary office in Hotel 3 レコードが選択されました sales.office_package.remove_office( 3); END SELECT * FROM OFFICES OFFICE_ID BUILDING NUMBER_SEATS DESCRIPTION Offshore Drive 30. Main small office rented by the company Park Avenue 40. Additional facility for new hires 2 レコードが選択されました 20

21 4. プロシージャーの作成 この章では以下の 3 つのプロシージャーの作成を行います COUNT_PROJECTS ADD_NEW_EMPLOYEE ASSIGN_EMPLOYEE_TO_NEW_ACCOUNT COUNT_PROJECTS は Oracle 上ではファンクションとして作成されていたオブジェクトです DB2 9.7 では アウトパラメーターを持つファンクションをサポートしていない為 移行するにはアウトパラメーターを持つプロシージャーとして書き換える必要があります ADD_NEW_EMPLOYEE は スタンドアロン タイプを参照しており修正が必要ですが 1 章で既に対応済みのため ここでの修正は必要ありません ASSIGN_EMPLOYEE_TO_NEW_ACCOUNT は修正の必要がなくそのまま作成が可能です 4.1 COUNT_PROJECTS のパラメーターパラメーター確認 _ パラメーターの確認 最初に workshoplab5plsql_ddl ディレクトリで以下のコマンドを実行し COUNT_PROJECTS ファンクションの DDL を確認します cat db2plsql_function.db2.count_projects DDL の確認では 特にこのファンクションのパラメーターを確認します 上記のコマンドの実行例の青字部分になります このファンクションでは IN パラメーターと OUT パラメーターを 1 つずつ持ち NUMBER の戻り値を返します 21

22 実行例 cat db2plsql_function.db2.count_projects --#SET TERMINATOR CONNECT TO LABDB SET CURRENT SCHEMA = 'SALES' --#SET :FUNCTION:SALES:COUNT_PROJECTS CREATE OR REPLACE FUNCTION "SALES"."COUNT_PROJECTS" (p_empid IN employees.emp_id%type, o_acct_id OUT employees.acct_id%type) RETURN NUMBER AS -- * DESCRIPTION: Function that counts the project based on the employeed id and also -- returns information on total projects of the account to which employee id belongs DEMO PURPOSE: Function with OUT parameter, FOR LOOP over cursor EXAMPLE: SELECT COUNT_PROJECTS(1, acct_id) FROM DUAL; * -- variable declaration v_totalprojects NUMBER:=0; v_accountprojects NUMBER; < 省略 > 4.2 COUNT_PROJECTS のプロシージャープロシージャーへのへの書き直し db2plsql_function.db2.count_projects の以下の点を書き換えます ( 修正したファイルは workshoplab5plsql_ddl_modified ディレクトリにあります お時間のない方や vi の操作に不慣れな方はこちらをご使用ください ) 8 行目 CREATE FUNCTION 文から CREATE PROCEDURE 文への変更と戻り値をアウトパラメーターとして定義し直します 変更前 CREATE OR REPLACE FUNCTION "SALES"."COUNT_PROJECTS" (p_empid IN employees.emp_id%type, o_acct_id OUT employees.acct_id%type) RETURN NUMBER 変更後 CREATE OR REPLACE PROCEDURE "COUNT_PROJECTS" (p_empid IN employees.emp_id%type, o_acct_id OUT employees.acct_id%type, out_return OUT NUMBER) 22

23 48 行目の RETURN をアウトパラメーターへの値の代入に書き換えます 変更前 RETURN v_totalprojects; 変更後 out_return:= v_totalprojects; 修正例 ( 青字部分が修正箇所 ) --#SET TERMINATOR CONNECT TO LABDB SET CURRENT SCHEMA = 'SALES' --#SET :FUNCTION:SALES:COUNT_PROJECTS CREATE OR REPLACE PROCEDURE "COUNT_PROJECTS" (p_empid IN employees.emp_id%type, o_acct_id OUT employees.acct_id%type, out_return OUT NUMBER) AS -- * < 省略 > -- * < 省略 > FOR v_accountrec IN c_deptaccts LOOP o_acct_id:=v_accountrec.acct_id; -- Determine the projects for this account. SELECT num_projects INTO v_accountprojects FROM accounts WHERE dept_code = v_accountrec.dept_code AND acct_id = v_accountrec.acct_id; -- Add it to the total so far. v_totalprojects := v_totalprojects + v_accountprojects; END LOOP; out_return:= v_totalprojects; END Count_Projects; TERMINATE 4.3 COUNT_PROJECTS プロシージャーの作成 _ プロシージャーの作成修正した DDL を以下のコマンドで実行し プロシージャーを作成します db2 -tvf db2plsql_function.db2.count_projects 23

24 実行例 db2 -tvf db2plsql_function.db2.count_projects CONNECT TO LABDB データベース接続情報 データベース サーバー = DB2LINUX SQL 許可 ID = DB2INST1 ローカル データベース別名 = LABDB SET CURRENT SCHEMA = 'SALES' CREATE OR REPLACE PROCEDURE "COUNT_PROJECTS" (p_empid IN employees.emp_id%type, o_acct_id OUT employees.acct_id%type, out_return OUT NUMBER) AS < 省略 > -- Add it to the total so far. v_totalprojects := v_totalprojects + v_accountprojects; END LOOP; out_return:= v_totalprojects; END Count_Projects; TERMINATE DB20000I TERMINATE コマンドが正常に完了しました CREATE OR REPLACE PROCEDURE 文の実行後に DB20000I SQL コマンドが正常に完了しました が表示されることを確認します _COUNT_PROJECTS プロシージャーの稼動確認下記のスクリプトを使用して パッケージが正常に稼働しているかどうかを確認します cd workshoplab5 db2 -tvf call.count_projects.clp このスクリプトは下記の様な SQL を含んでおり COUNT_PROJECTS プロシージャーを呼び出してアウトパラメーターに返された値を表示します CONNECT TO LABDB; SET SQLCOMPAT PLSQL; SET CURRENT SCHEMA SALES; SET SERVEROUTPUT ON; DECLARE i_emp_id NUMBER:=15; o_acct_id employees.acct_id%type; 24

25 o_num NUMBER; SALES.COUNT_PROJECTS(i_emp_id, o_acct_id, o_num); DBMS_OUTPUT.PUT_LINE ( 'Employee ID : ' i_emp_id); DBMS_OUTPUT.PUT_LINE ( 'Related account ID: ' o_acct_id); DBMS_OUTPUT.PUT_LINE ( 'Total projects : ' o_num); END; 正常にプロシージャーが作成されている場合 実行時に以下の実行例のように EmployeeID=15 の Related account ID と Total projects が表示されます 実行例 db2inst1@db2v97onsles10:workshoplab5plsql_ddl_modified> cd workshoplab5 db2inst1@db2v97onsles10:workshoplab5> db2 -tvf call.count_projects.clp CONNECT TO LABDB データベース接続情報 データベース サーバー = DB2LINUX SQL 許可 ID = DB2INST1 ローカル データベース別名 = LABDB SET SQLCOMPAT PLSQL DB20000I SET SQLCOMPAT コマンドが正常に完了しました SET CURRENT SCHEMA SALES SET SERVEROUTPUT ON DB20000I SET SERVEROUTPUT コマンドが正常に完了しました DECLARE i_emp_id NUMBER:=15; o_acct_id employees.acct_id%type; o_num NUMBER; SALES.COUNT_PROJECTS(i_emp_id, o_acct_id, o_num); DBMS_OUTPUT.PUT_LINE ( 'Employee ID : ' i_emp_id); DBMS_OUTPUT.PUT_LINE ( 'Related account ID: ' o_acct_id); DBMS_OUTPUT.PUT_LINE ( 'Total projects : ' o_num); END; Employee ID : 15 Related account ID: 5 Total projects : 4 TERMINATE DB20000I TERMINATE コマンドが正常に完了しました 25

26 4.4 ADD_NEW_EMPLOYEE プロシージャーの作成 ADD_NEW_EMPLOYEE プロシージャーは Oracle で稼働していた PLSQL のロジックがそのまま使用できます ただし プロシージャー中で参照しているパッケージの変数 (ENVELOPE..EMP_INFO_TYPE,) の名前解決をするため 関数の検索順序に SALES スキーマを追加する必要があります _ プロシージャーの DDL 修正 vi エディターから 1 章で修正した db2plsql_procedure.db2.add_new_employee ファイルを開き 下記の DDL のように SET CURRENT PATH = SALES, CURRENT PATH を追加してください (EMP_INFO_TYPE-> ENVELOPE.EMP_INFO_TYPE への変更は 1 章で対応済み ) db2plsql_procedure.db2.add_new_employee ファイル修正例 ( 一部抜粋 ) --#SET TERMINATOR CONNECT TO LABDB SET CURRENT SCHEMA = 'SALES' SET CURRENT PATH = SALES, CURRENT PATH --#SET :PROCEDURE:SALES:ADD_NEW_EMPLOYEE CREATE OR REPLACE PROCEDURE "SALES"."ADD_NEW_EMPLOYEE" ( p_firstname employees.first_name%type, p_lastname employees.last_name%type, p_empmgrid employees.emp_mgr_id%type, p_deptcode employees.dept_code%type, p_account employees.acct_id%type, o_employee OUT ENVELOPE.EMP_INFO_TYPE, p_createdate employees.create_date%type DEFAULT SYSDATE, p_officeid employees.office_id%type DEFAULT 2 ) AS -- * DESCRIPTION: Procedure to add a new employee 修正後 以下のコマンドを実行して ADD_NEW_EMPLOYEE プロシージャーを作成します db2 -tvf db2plsql_procedure.db2.add_new_employee 26

27 実行例 db2 -tvf db2plsql_procedure.db2.add_new_employee CONNECT TO LABDB データベース接続情報 データベース サーバー = DB2LINUX SQL 許可 ID = DB2INST1 ローカル データベース別名 = LABDB SET CURRENT SCHEMA = 'SALES' SET CURRENT PATH = SALES, CURRENT PATH CREATE OR REPLACE PROCEDURE "SALES"."ADD_NEW_EMPLOYEE" ( p_firstname employees.first_name%type, p_lastname employees.last_name%type, p_empmgrid employees.emp_mgr_id%type, p_deptcode employees.dept_code%type, p_account employees.acct_id%type, o_employee OUT ENVELOPE.EMP_INFO_TYPE, p_createdate employees.create_date%type DEFAULT SYSDATE, p_officeid employees.office_id%type DEFAULT 2 ) AS < 省略 > OPEN c_get_employee; FETCH c_get_employee INTO o_employee; CLOSE c_get_employee; END Add_New_Employee; _ADD_NEW_EMPLOYEE プロシージャーの稼動確認下記のスクリプトを使用して パッケージが正常に稼働しているかどうかを確認します cd workshoplab5 db2 -tvf call.add_new_employee.clp このスクリプトは下記の様な SQL を含んでおり ADD_NEW_ENPLOYEE プロシージャーを呼び出し EMPLOYEES 表への INSERT を実施します EMPLOYEES 表に FIRST_NAME= MAX のデータが挿入されるのが確認できるはずです CONNECT TO LABDB; SET SQLCOMPAT PLSQL; SET CURRENT SCHEMA SALES; SET SERVEROUTPUT ON; alter sequence employee_sequence restart with 999; delete from employees where emp_id = 1000; select emp_id,first_name,last_name,band from employees where first_name = 'MAX'; DECLARE emp_info sales.envelope.emp_info_type; 27

28 実行例 sales.add_new_employee('max', 'Trenton', 1, 'A00', 1, emp_info,sysdate); DBMS_OUTPUT.PUT_LINE('EMP_ID :' emp_info.emp_id); DBMS_OUTPUT.PUT_LINE('FIRST_NAME :' emp_info.first_name); DBMS_OUTPUT.PUT_LINE('LAST_NAME :' emp_info.last_name); DBMS_OUTPUT.PUT_LINE('BAND :' emp_info.band); DBMS_OUTPUT.PUT_LINE('HIRE DATE :' emp_info.hire_date); END; select emp_id,first_name,last_name,band from employees where first_name = 'MAX'; db2inst1@db2v97onsles10:workshoplab5> db2 -tvf call.add_new_employee.clp CONNECT TO LABDB < 省略 > alter sequence employee_sequence restart with 999 delete from employees where emp_id = 1000 select emp_id,first_name,last_name,band from employees where first_name = 'MAX' EMP_ID FIRST_NAME LAST_NAME BAND レコードが選択されました DECLARE emp_info sales.envelope.emp_info_type; sales.add_new_employee('max', 'Trenton', 1, 'A00', 1, emp_info,sysdate); DBMS_OUTPUT.PUT_LINE('EMP_ID :' emp_info.emp_id); DBMS_OUTPUT.PUT_LINE('FIRST_NAME :' emp_info.first_name); DBMS_OUTPUT.PUT_LINE('LAST_NAME :' emp_info.last_name); DBMS_OUTPUT.PUT_LINE('BAND :' emp_info.band); DBMS_OUTPUT.PUT_LINE('HIRE DATE :' emp_info.hire_date); END; EMP_ID :1000 FIRST_NAME :MAX LAST_NAME :TRENTON BAND :1 HIRE DATE : select emp_id,first_name,last_name,band from employees where first_name = 'MAX' EMP_ID FIRST_NAME LAST_NAME BAND MAX TRENTON 1 1 レコードが選択されました 28

29 4.5 ASSIGN_EMPLOYEE_TO_NEW_ACCOUNT プロシージャーの作成 ASSIGN_EMPLOYEE_TO_NEW_ACCOUNT プロシージャーは Oracle で稼働していた PLSQL のロジックがそのまま使用できます 以下のコマンドを実行して ASSIGN_EMPLOYEE_TO_NEW_ACCOUNT プロシージャーを作成します db2 -tvf db2plsql_procedure.db2.assign_employee_to_new_account 実行例 db2 -tvf db2plsql_procedure.db2.assign_employee_to_new_account CONNECT TO LABDB データベース接続情報 データベース サーバー = DB2LINUX SQL 許可 ID = DB2INST1 ローカル データベース別名 = LABDB SET CURRENT SCHEMA = 'SALES' CREATE OR REPLACE PROCEDURE "SALES"."ASSIGN_EMPLOYEE_TO_NEW_ACCOUNT" ( p_employeeid IN employees.emp_id%type, p_deptcode IN accounts.dept_code%type, p_acctid IN accounts.acct_id%type) AS -- * DESCRIPTION: Re-assigns employee to a new account DEMO PURPOSE: RAISE_APPLICATION_ERROR, < 省略 > EXCEPTION WHEN NO_DATA_FOUND THEN --Account information passed to this procedure doesn't exist. Raise an error RAISE_APPLICATION_ERROR(-20001, p_deptcode ' ' p_acctid ' doesn''t exist!'); END Assign_Employee_To_New_Account; _ASSIGN_EMPLOYEE_TO_NEW_ACCOUNT プロシージャーの稼動確認下記のスクリプトを使用して パッケージが正常に稼働しているかどうかを確認します cd workshoplab5 db2 -tvf call.assign_employee_to_new_account.clp 29

30 このスクリプトは下記の様な SQL を含んでいます 正しくプロシージャーが作成されていれば ASSIGN_EMPLOYEE_TO_NEW_ACCOUNT プロシージャーを呼び出しにより EMP_ID=15 の DEPT_CODE が E21 に変更されるはずです CONNECT TO LABDB; SELECT SMALLINT(ACCT_ID) ACCT_ID, DEPT_CODE, MAX_EMPLOYEES, CURRENT_EMPLOYEES FROM ACCOUNTS WHERE DEPT_CODE in ('D11', 'E21'); SELECT EMP_ID, FIRST_NAME, LAST_NAME, DEPT_CODE, ACCT_ID FROM EMPLOYEES WHERE EMP_ID=15; CALL SALES.ASSIGN_EMPLOYEE_TO_NEW_ACCOUNT(15, 'E21', 4); SELECT SMALLINT(ACCT_ID) ACCT_ID, DEPT_CODE, MAX_EMPLOYEES, CURRENT_EMPLOYEES FROM ACCOUNTS WHERE DEPT_CODE in ('D11', 'E21'); SELECT EMP_ID, FIRST_NAME, LAST_NAME, DEPT_CODE, ACCT_ID FROM EMPLOYEES WHERE EMP_ID=15; 実行例 db2 -tvf call.assign_employee_to_new_account.clp < 省略 > SELECT SMALLINT(ACCT_ID) ACCT_ID, DEPT_CODE, MAX_EMPLOYEES, CURRENT_EMPLOYEES FROM ACCOUNTS WHERE DEPT_CODE in ('D11', 'E21') ACCT_ID DEPT_CODE MAX_EMPLOYEES CURRENT_EMPLOYEES E D SELECT EMP_ID, FIRST_NAME, LAST_NAME, DEPT_CODE, ACCT_ID FROM EMPLOYEES WHERE EMP_ID=15 EMP_ID FIRST_NAME LAST_NAME DEPT_CODE ACCT_ID BRUCE ADAMSON D11 5. CALL SALES.ASSIGN_EMPLOYEE_TO_NEW_ACCOUNT(15, 'E21', 4) リターン状況 = 0 SELECT SMALLINT(ACCT_ID) ACCT_ID, DEPT_CODE, MAX_EMPLOYEES, CURRENT_EMPLOYEES FROM ACCOUNTS WHERE DEPT_CODE in ('D11', 'E21') ACCT_ID DEPT_CODE MAX_EMPLOYEES CURRENT_EMPLOYEES E D SELECT EMP_ID, FIRST_NAME, LAST_NAME, DEPT_CODE, ACCT_ID FROM EMPLOYEES WHERE EMP_ID=15 EMP_ID FIRST_NAME LAST_NAME DEPT_CODE ACCT_ID BRUCE ADAMSON E

31 5. View の作成 この章では 以下の View を作成します ORGANIZATION_STRUCTURE" この View の DDL では Oracle 固有の FORCE オプションが指定されています このオプションは View に依存関係を持つオブジェクトが View 作成時になくても View の作成を行えるようにするオプションです DB2 9.7 では FORCE オプションは CREATE VIEW 文で記述できないため このオプションを取り除いて実行する必要があります _DDL の確認 workshoplab5plsql_ddl ディレクトリにある db2plsql_views.db2.organization_structure ファイルの内容を以下のコマンドを実行して確認します cat db2plsql_views.db2.organization_structure FORCE オプションがついていることを確認します 実行例 cat db2plsql_views.db2.organization_structure --#SET TERMINATOR CONNECT TO LABDB SET CURRENT SCHEMA = 'SALES' --#SET :VIEW:SALES:ORGANIZATION_STRUCTURE CREATE OR REPLACE FORCE VIEW "SALES"."ORGANIZATION_STRUCTURE" ("LEVEL", "FULL_NAME", "DEPARTMENT") AS SELECT LEVEL, SUBSTR((LPAD(' ', 4 * LEVEL - 1) INITCAP(e.last_name) ', ' INITCAP(e.first_name)), 1, 40), NVL(d.dept_name, 'Uknown') FROM employees e, departments d WHERE e.dept_code=d.dept_code(+) START WITH emp_id = 1 CONNECT BY NOCYCLE PRIOR emp_id = emp_mgr_id _FORCE オプションの除去 vi エディタを使用して db2plsql_views.db2.organization_structure ファイルを修正します (workshoplab5plsql_ddl_modified ディレクトリに修正済みのファイルがあります お時間のない方や vi の操作に不慣れな方はこちらをご使用ください ) 31

32 修正点 FORCE オプションを取り除く 修正例 --#SET TERMINATOR CONNECT TO LABDB SET CURRENT SCHEMA = 'SALES' --#SET :VIEW:SALES:ORGANIZATION_STRUCTURE CREATE OR REPLACE VIEW "SALES"."ORGANIZATION_STRUCTURE" ("LEVEL", "FULL_NAME", "DEPARTMENT") AS SELECT LEVEL, SUBSTR((LPAD(' ', 4 * LEVEL - 1) INITCAP(e.last_name) ', ' INITCAP(e.first_name)), 1, 40), NVL(d.dept_name, 'Uknown') FROM employees e, departments d WHERE e.dept_code=d.dept_code(+) START WITH emp_id = 1 CONNECT BY NOCYCLE PRIOR emp_id = emp_mgr_id _View の作成修正したファイルを以下のコマンドで実行します db2 -tvf db2plsql_views.db2.organization_structure DB20000I メッセージが表示されトリガーが正常に作成されたことを確認します 実行例 db2inst1@db2v97onsles10:workshoplab5plsql_ddl_modified> db2 -tvf db2plsql_views.db2.organization_structure CONNECT TO LABDB データベース接続情報 データベース サーバー = DB2LINUX SQL 許可 ID = DB2INST1 ローカル データベース別名 = LABDB SET CURRENT SCHEMA = 'SALES' CREATE OR REPLACE VIEW "SALES"."ORGANIZATION_STRUCTURE" ("LEVEL", "FULL_NAME", "DEPARTMENT") AS SELECT LEVEL, SUBSTR((LPAD(' ', 4 * LEVEL - 1) INITCAP(e.last_name) ', ' INITCAP(e.first_name)), 1, 40), NVL(d.dept_name, 'Uknown') FROM employees e, departments d WHERE e.dept_code=d.dept_code(+) START WITH emp_id = 1 CONNECT BY NOCYCLE PRIOR emp_id = emp_mgr_id 32

33 6. トリガーの作成 この章では Update_Departments,UPDATE_ACC_ON_NEW_EMPL の 2 つのトリガーを作成します 6.1 Update_Departments トリガーの作成 Update_Departments トリガーは複数のアクションで起動するトリガーです 具体的には INSERT UPDATE DELETE 全ての変更処理に対して起動します DB2 9.7 ではこのようなトリガーをサポートしていません DB2 で使用できるようにするためには それぞれのアクションで起動するトリガーとして分割して作成します ( 例 INSERT トリガー UPDATE トリガー DELETE トリガーの 3 つに分割 ) _UPDATE_DEPARTMENTS トリガーの確認最初に Update_DEPARTMENTS トリガーの DDL を確認します 以下のコマンドを実行し workshoplab5pl_sql_ddl ディレクトリにある db2plsql_trigger.db2.update_departments の内容を確認します cat db2plsql_trigger.db2.update_departments 青字になっている部分がトリガーの起動アクションの設定になります 実行例 db2inst1@db2v97onsles10:workshoplab5plsql_ddl> cat db2plsql_trigger.db2.update_departments < 省略 > CREATE OR REPLACE TRIGGER "SALES"."UPDATE_DEPARTMENTS" < 省略 > AFTER INSERT OR DELETE OR UPDATE ON employees ees FOR EACH ROW DECLARE CURSOR c_stats IS SELECT dept_code, COUNT(*) total_employees, SUM(current_projects) total_projects FROM employees GROUP BY dept_code; IF DELETING THEN UPDATE departments SET (total_projects, total_employees)= (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code=:old.dept_code; ELSIF INSERTING THEN UPDATE departments SET (total_projects, total_employees)= (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code=:new.dept_code; ELSIF UPDATING THEN UPDATE departments SET (total_projects, total_employees)= (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code IN (:old.dept_code, :new.dept_code); END IF; END UpdateDepartments; 33

34 ここでは UPDATE_DEPARTMENTS トリガーを以下の 3 つのトリガーに分割して作成します UPDATE_DEPARTMENTS_ON_UPDATE UPDATE_DEPARTMENTS_ON_INSERT UPDATE_DEPARTMENTS_ON_DELETE _UPDATE トリガーの作成 db2plsql_trigger.db2.update_departments ファイルを db2plsql_trigger.db2.update_departments_update ファイルとしてコピーし以下の点を修正します ( 修正済みのファイルは workshoplab5plsql_ddl_modified に用意してあります お時間がない方や vi の操作が不慣れな方はこちらをご使用ください ) 修正点 1 トリガー名の変更 UPDATE_DEPARTMENTS UPDATE_DEPARTMENTS_ON_UPDATE 2. トリガーの起動アクションの変更 AFTER INSERT OR DELETE OR UPDATE AFTER UPDATE 3.UPDATE 時以外の処理をコメントアウト 修正例 ( 修正点は青字部分 ) --#SET TERMINATOR < 省略 > --#SET :TRIGGER:SALES:UPDATE_DEPARTMENTS CREATE OR REPLACE TRIGGER "SALES"."UPDATE_DEPARTMENTS_ON_UPDATE UPDATE_DEPARTMENTS_ON_UPDATE" -- * < 省略 > -- * AFTER UPDATE ON employees FOR EACH ROW DECLARE CURSOR c_stats IS SELECT dept_code, COUNT(*) total_employees, SUM(current_projects) total_projects FROM employees GROUP BY dept_code; -- IF DELETING THEN -- UPDATE departments SET (total_projects, total_employees)= -- (SELECT T count(1), SUM(current_projects) FROM employees) WHERE dept_code=:old.dept_code; -- ELSIF INSERTING THEN -- UPDATE departments SET (total_projects, total_employees)= -- (SELECT count(1), SUM(current_projects) FROM employees) WHERE W dept_code=:new.dept_code; -- ELSIF UPDATING THEN UPDATE departments SET (total_projects, total_employees)= (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code IN (:old.dept_code, :new.dept_code); -- END IF; END UpdateDepartments; 34

35 修正後 以下のコマンドで DDL を実行し トリガーを作成します db2 -tvf db2plsql_trigger.db2.update_departments_update DB20000I メッセージが表示されトリガーが正常に作成されたことを確認します 実行例 db2 -tvf db2plsql_trigger.db2.update_departments_update CONNECT TO LABDB データベース接続情報 データベース サーバー = DB2LINUX SQL 許可 ID = DB2INST1 ローカル データベース別名 = LABDB SET CURRENT SCHEMA = 'SALES' CREATE OR REPLACE TRIGGER "SALES"."UPDATE_DEPARTMENTS_ON_UPDATE" < 省略 > UPDATE departments SET (total_projects, total_employees)= (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code IN (:old.dept_code, :new.dept_code); -- END IF; END UpdateDepartments; TERMINATE DB20000I TERMINATE コマンドが正常に完了しました 35

36 _INSERT トリガーの作成 db2plsql_trigger.db2.update_departments ファイルを db2plsql_trigger.db2.update_departments_insert ファイルとしてコピーし以下の点を修正します ( 修正済みのファイルは workshoplab5plsql_ddl_modified に用意してあります お時間がない方や vi の操作が不慣れな方はこちらをご使用ください ) 修正点 1 トリガー名の変更 UPDATE_DEPARTMENTS UPDATE_DEPARTMENTS_ON_INSERT 2. トリガーの起動アクションの変更 AFTER INSERT OR DELETE OR UPDATE AFTER INSERT 3.INSERT 時以外の処理をコメントアウト 修正例 ( 修正点は青字部分 ) < 省略 > CREATE OR REPLACE TRIGGER "SALES"."UPDATE_DEPARTMENTS_ON_INSERT UPDATE_DEPARTMENTS_ON_INSERT" -- * < 省略 > -- * AFTER INSERT ON employees FOR EACH ROW DECLARE CURSOR c_stats IS SELECT dept_code, COUNT(*) total_employees, SUM(current_projects) total_projects FROM employees GROUP BY dept_code; -- IF DELETING THEN -- UPDATE departments SET (total_projects, total_employees)= -- (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code=:old.dept_code; -- ELSIF INSERTING THEN UPDATE departments SET (total_projects, total_employees)= (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code=:new.dept_code; -- ELSIF UPDATING THEN -- UPDATE departments SET (total_projects, total_employees)= -- (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code IN (:old.dept_code, :new.dept_code); -- END IF; END UpdateDepartments; 修正後 以下のコマンドで DDL を実行し トリガーを作成します db2 -tvf db2plsql_trigger.db2.update_departments_insert DB20000I メッセージが表示されトリガーが正常に作成されたことを確認します 36

37 実行例 db2 -tvf db2plsql_trigger.db2.update_departments_insert CONNECT TO LABDB < 省略 > CREATE OR REPLACE TRIGGER "SALES"."UPDATE_DEPARTMENTS_ON_INSERT" < 省略 > -- IF DELETING THEN -- UPDATE departments SET (total_projects, total_employees)= -- (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code=:old.dept_code; -- ELSIF INSERTING THEN UPDATE departments SET (total_projects, total_employees)= (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code=:new.dept_code; -- ELSIF UPDATING THEN -- UPDATE departments SET (total_projects, total_employees)= -- (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code IN (:old.dept_code, :new.dept_code); -- END IF; END UpdateDepartments; 37

38 _DELETE トリガーの作成 db2plsql_trigger.db2.update_departments ファイルを db2plsql_trigger.db2.update_departments_delete ファイルとしてコピーし以下の点を修正します ( 修正済みのファイルは workshoplab5plsql_ddl_modified に用意してあります お時間がない方や vi の操作が不慣れな方はこちらをご使用ください ) 修正点 1 トリガー名の変更 UPDATE_DEPARTMENTS UPDATE_DEPARTMENTS_ON_DELETE 2. トリガーの起動アクションの変更 AFTER INSERT OR DELETE OR UPDATE AFTER DELETE 3.DELETE 時以外の処理をコメントアウト 修正例 ( 修正点は青字部分 ) --#SET TERMINATOR < 省略 > CREATE OR REPLACE TRIGGER "SALES"."UPDATE_DEPARTMENTS_ON_DELETE UPDATE_DEPARTMENTS_ON_DELETE" -- * < 省略 > -- * AFTER DELETE ON employees FOR EACH ROW DECLARE CURSOR c_stats IS SELECT dept_code, COUNT(*) total_employees, SUM(current_projects) total_projects FROM employees GROUP BY dept_code; -- IF DELETING THEN UPDATE departments SET (total_projects, total_employees)= (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code=:old.dept_code; -- ELSIF INSERTING THEN -- UPDATE departments SET (total_projects, total_employees)= -- (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code=:new.dept_code; -- ELSIF UPDATING THEN -- UPDATE departments SET (total_projects, total_employees)= -- (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code IN (:old.dept_code, :new.dept_code); -- END IF; END UpdateDepartments; 修正後 以下のコマンドで DDL を実行し トリガーを作成します db2 -tvf db2plsql_trigger.db2.update_departments_delete DB20000I メッセージが表示されトリガーが正常に作成されたことを確認します 38

39 実行例 db2 -tvf db2plsql_trigger.db2.update_departments_delete CONNECT TO LABDB < 省略 > CREATE OR REPLACE TRIGGER "SALES"."UPDATE_DEPARTMENTS_ON_DELETE" -- * < 省略 > -- IF DELETING THEN UPDATE departments SET (total_projects, total_employees)= (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code=:old.dept_code; -- ELSIF INSERTING THEN -- UPDATE departments SET (total_projects, total_employees)= -- (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code=:new.dept_code; -- ELSIF UPDATING THEN -- UPDATE departments SET (total_projects, total_employees)= -- (SELECT count(1), SUM(current_projects) FROM employees) WHERE dept_code IN (:old.dept_code, :new.dept_code); -- END IF; END UpdateDepartments; 39

40 6.2 UPDATE_ACC_ON_NEW_EMPL トリガーの作成 UPDATE_ACC_ON_NEW_EMPL トリガーは UPDATE_DEPARTMENTS トリガーのように複数の操作に対して起動するトリガーではなく INSERT に対してのみ起動するトリガーであり DB2 9.7 でもそのまま稼動させることが可能です workshoplab5plsql_ddl ディレクトリにある db2plsql_trigger.db2.update_acc_on_new_empl ファイルの DDL を以下のコマンドで確認します cat db2plsql_trigger.db2.update_acc_on_new_empl 実行例 cat db2plsql_trigger.db2.update_acc_on_new_empl < 省略 > CREATE OR REPLACE TRIGGER "SALES"."UPDATE_ACC_ON_NEW_EMPL" < 省略 > AFTER INSERT ON employees FOR EACH ROW DECLARE v_num_projects accounts.num_projects%type; -- Determine the number of projects for this account. SELECT num_projects INTO v_num_projects FROM accounts WHERE dept_code = :new.dept_code AND acct_id = :new.acct_id; UPDATE employees SET current_projects = current_projects + v_num_projects WHERE emp_id = :new.emp_mgr_id; -- Add one to the number of employees in the project. UPDATE accounts SET current_employees = current_employees + 1 WHERE dept_code = :new.dept_code AND acct_id = :new.acct_id; END Update_Acc_On_New_Empl; 以下のコマンドで DDL を実行し トリガーを作成します db2 -tvf db2plsql_trigger.db2.update_acc_on_new_empl DB20000I メッセージが表示されトリガーが正常に作成されたことを確認します 40

41 実行例 db2 -tvf db2plsql_trigger.db2.update_acc_on_new_empl < 省略 > CREATE OR REPLACE TRIGGER "SALES"."UPDATE_ACC_ON_NEW_EMPL" < 省略 > -- Determine the number of projects for this account. SELECT num_projects INTO v_num_projects FROM accounts WHERE dept_code = :new.dept_code AND acct_id = :new.acct_id; UPDATE employees SET current_projects = current_projects + v_num_projects WHERE emp_id = :new.emp_mgr_id; -- Add one to the number of employees in the project. UPDATE accounts SET current_employees = current_employees + 1 WHERE dept_code = :new.dept_code AND acct_id = :new.acct_id; END Update_Acc_On_New_Empl; 以上です 41

42 Copyright IBM Corporation 2009 All Rights Reserved. 本書に含まれている情報は 正式な IBM のテストを受けていません また 明記にしろ 暗黙的にしろ なんらの保証もなしに配布されるものです この情報の使用またはこれらの技術の実施は いずれも 使用先の責任において行われるべきものであり それらを評価し 実際に使用する環境に統合する使用先の判断に依存しています それぞれの項目は ある特定の状態において正確であることが IBM によって調べられていますが 他のところで同じまたは同様の結果が得られる保証はありません これらの技術を自身の環境に適用することを試みる使用先は 自己の責任において行う必要があります 42

Microsoft Word - Lab6.doc

Microsoft Word - Lab6.doc I Oracle からのアプリケーションの移行ハンズオン (Lab6 Lab6) 日本アイアイ ビービー エムエム株式会社 Contents CONTENTS...2 1. はじめに...3 2. 内容...3 3. SELECT 文を実行実行する JAVA プログラム...3 3.1 ソースコードの確認...3 3.2 ソースコードの編集...4 3.3 プログラムのコンパイル...5 3.4 プログラムの実行...6

More information

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt

Microsoft PowerPoint - 第5章補足-DB2組み込みSQL.ppt 開発編第 5 章補足 DB2 組み込み SQL 本書に含まれている情報は 正式な IBM のテストを受けていません また 明記にしろ 暗黙的にしろ なんらの保証もなしに配布されるものです この情報の使用またはこれらの技術の実施は いずれも 使用先の責任において行われるべきものであり それらを評価し 実際に使用する環境に統合する使用先の判断に依存しています それぞれの項目は

More information

[Lab 2]Oracleからの移行を促進する新機能

[Lab 2]Oracleからの移行を促進する新機能 [Lab 2] Oracle からの移行を促進する新機能 Contents CONTENTS... 2 1. はじめに... 3 2. 内容... 3 3. レジストリ変数の設定とデータベースの作成... 3 3.1 レジストリ変数なしでのデータベースの作成... 3 3.2 レジストリ変数ありでのデータベースの作成... 4 3.3 データタイプの互換性パラメーターの確認... 5 4. ORACLE

More information

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部

第 2 章 PL/SQL の基本記述 この章では PL/SQL プログラムの基本的な記述方法について説明します 1. 宣言部 2. 実行部 3. 例外処理部 はじめに コース概要と目的 Oracle 独自の手続き型言語である PL/SQL について説明します PL/SQL の基本構文 ストアド サブプログラム トリガーの作成方法 またストアド サブプログラムの管理について習得することを目的としています 受講対象者 これから PL/SQL を使用してアプリケーション開発をされる方 前提条件 SQL トレーニング コースを受講された方 もしくは 同等の知識をお持ちの方

More information

Microsoft Word - Lab5d-DB2組み込みSQL.doc

Microsoft Word - Lab5d-DB2組み込みSQL.doc [Lab 5d] DB2 でのアプリケーション開発 ( 組み込み SQL) 2011 年 06 月日本アイ ビー エム株式会社 Contents CONTENTS...2 1. はじめに...3 2. 内容...3 3. DB2 組み込み SQL への移行...3 3.1 準備...4 3.2 エラー処理用プログラムに関する処理...5 3.3 メインプログラムに関する処理...7 3.4 実行プログラムの生成...11

More information

橡実践Oracle Objects for OLE

橡実践Oracle Objects for OLE THE Database FOR Network Computing 2 1. 2 1-1. PL/SQL 2 1-2. 9 1-3. PL/SQL 11 2. 14 3. 16 3-1. NUMBER 16 3-2. CHAR/VARCHAR2 18 3-3. DATE 18 4. 23 4-1. 23 4-2. / 24 26 1. COPYTOCLIPBOARD 26 III. 28 1.

More information

DumpCollection IT Exam Training online / Bootcamp PDF and Testing Engine, study and practice

DumpCollection IT Exam Training online / Bootcamp   PDF and Testing Engine, study and practice DumpCollection IT Exam Training online / Bootcamp http://www.dumpcollection.com PDF and Testing Engine, study and practice Exam : 1z0-144 日本語 (JPN) Title : Oracle Database 11g: Program with PL/SQL Vendor

More information

ストラドプロシージャの呼び出し方

ストラドプロシージャの呼び出し方 Release10.5 Oracle DataServer Informix MS SQL NXJ SQL JDBC Java JDBC NXJ : NXJ JDBC / NXJ EXEC SQL [USING CONNECTION ] CALL [.][.] ([])

More information

PGECons技術ドキュメントテンプレート Ver.3

PGECons技術ドキュメントテンプレート Ver.3 エンタープライズ コンソーシアム技術部会 WG#2 ストアドプロシージャ移行調査編 製作者担当企業名クオリカ株式会社 2013 Enterprise Consortium 改訂履歴 版 改訂日 変更内容 1.0 2013/03/25 新規作成 ライセンス 本作品は CC-BY ライセンスによって許諾されています ライセンスの内容を知りたい方は http://creativecommons.org/licenses/by/2.1/jp/

More information

ストアドプロシージャ移行調査編

ストアドプロシージャ移行調査編 エンタープライズ コンソーシアム技術部会 WG#2 ストアドプロシージャ移行調査編 製作者担当企業名株式会社インフォメーションクリエーティブクオリカ株式会社 2014 Enterprise Consortium 改訂履歴 版 改訂日 変更内容 1.0 2013/03/25 新規作成 2.0 2014/03/26 2013 年度活動成果の追加 2.1 2017/06/26 4.2. トランザクション制御

More information

0 第 4 書データベース操作 i 4.1 データベースへの接続 (1) データベースチェックポイントの追加 データベースチェックポイントを追加します (2)ODBC による接続 ODBC を使用してデータベースへ接続します SQL 文を手作業で指定する場合 最大フェッチ行数を指定する場合はここで最大行数を指定します ii 接続文字列を作成します 作成ボタンクリック > データソース選択 > データベース接続

More information

1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058

1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058 1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058 2 Excel 1 SQL 1 SQL Server sp_executesql Oracle SQL

More information

Microsoft Word - Android_SQLite講座_画面800×1280

Microsoft Word - Android_SQLite講座_画面800×1280 Page 24 11 SQLite の概要 Android にはリレーショナルデータベースである SQLite が標準で掲載されています リレーショナルデータベースは データを表の形で扱うことができるデータベースです リレーショナルデータベースには SQL と呼ばれる言語によって簡単にデータの操作や問い合わせができようになっています SQLite は クライアントサーバ形式ではなく端末の中で処理が完結します

More information

( ハイブリット型データベース環境 ) プロトタイプ検証結果 第二版 有限会社ツインズ Twinz Co., Ltd 年 7 月 3 日 /15

( ハイブリット型データベース環境 ) プロトタイプ検証結果 第二版 有限会社ツインズ Twinz Co., Ltd 年 7 月 3 日 /15 HDB@ONE ( ハイブリット型データベース環境 ) プロトタイプ検証結果 第二版 有限会社ツインズ Twinz Co., Ltd. 2011 年 7 月 3 日 2011-07-3 1/15 1.HDB@ONE( ハイブリット型データベース環境 ) について HDB@ONE は異なるプラットフォーム上の異なるデータベースをレプリケーションをとることにより あたかも単一のデータベースのように扱うことを可能にした新しいデータベース

More information

Warehouse Builderにおける予測分析の使用

Warehouse Builderにおける予測分析の使用 Warehouse Builder Oracle 2006 3 Warehouse Builder... 3 ETL... 4 DMBS_PREDICTIVE_ANALYTICS... 4... 5 1... 5 2... 5 3... 5... 6 SQL PREDICT... 7... 9 1... 9 2... 9 3... 9... 10 PL/SQL... 11... 12... 12...

More information

~~~~~~~~~~~~~~~~~~ wait Call CPU time 1, latch: library cache 7, latch: library cache lock 4, job scheduler co

~~~~~~~~~~~~~~~~~~ wait Call CPU time 1, latch: library cache 7, latch: library cache lock 4, job scheduler co 072 DB Magazine 2007 September ~~~~~~~~~~~~~~~~~~ wait Call CPU time 1,055 34.7 latch: library cache 7,278 750 103 24.7 latch: library cache lock 4,194 465 111 15.3 job scheduler coordinator slave wait

More information

Calpont InfiniDBマルチUM同期ガイド

Calpont InfiniDBマルチUM同期ガイド Calpont InfiniDB マルチ UM 同期ガイド Release 3.5.1 Document Version 3.5.1-1 December 2012 2801 Network Blvd., Suite 220 : Frisco, Texas 75034 : 972.999.1355 info@calpont.com : www.calpont.com Copyright 2012 Calpont

More information

5 Q. 結果セットを 1 行飛ばしに FETCH することはできますか A. できません Oracle は必ず結果セットを上から 1 行ずつ FETCH します 6 Q. カーソルを一度にいくつまでオープンできますか A. 初期化パラメータ OPEN_CURSORS で指定したの値までカーソルをオ

5 Q. 結果セットを 1 行飛ばしに FETCH することはできますか A. できません Oracle は必ず結果セットを上から 1 行ずつ FETCH します 6 Q. カーソルを一度にいくつまでオープンできますか A. 初期化パラメータ OPEN_CURSORS で指定したの値までカーソルをオ PL/SQL プログラミング Ⅰ ~ 研修受講後のスキルアップサポート ~ 対応バージョン :Oracle 10gR1 ~ 12cR1 本資料は アシスト Oracle 研修をご受講いただいたお客様からのご質問や 研修ではご案内できなかった情報などを FAQ にまとめたものです 研修受講後のスキルアップの一助として 是非お役立てください ご利用上の注意事項は最後のページにまとめられております ご確認のうえ

More information

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索

eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索 eラーニング資料 e ラーニングの制作目標 データベース編 41 ページデータベースの基本となる概要を以下に示す この内容のコースで eラーニングコンテンツを作成予定 データベース管理 コンピュータで行われる基本的なデータに対する処理は 次の 4 種類です 新しいデータを追加する 既存のデータを探索する 違うデータに変更する 要らなくなったデータを削除する 各システムごとに障害対策も含めて 正確にこのようなデータ処理のプログラムを作ることは大変なことです

More information

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft

内容 Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作... 1 サーバーエクスプローラ... 4 データ接続... 4 データベース操作のサブメニューコンテキスト... 5 データベースのプロパティ... 6 SQL Server... 6 Microsoft Visual Studio サーバーエクスプローラで学ぶ SQL とデータベース操作 Access 2007 と SQL Server Express を使用 SQL 文は SQL Server 主体で解説 Access 版ノースウィンドウデータベースを使用 DBMS プログラム サーバーエクスプローラ SQL 文 実行結果 データベース エンジン データベース SQL 文とは 1 度のコマンドで必要なデータを効率よく取得するための技術といえます

More information

標準化 補足資料

標準化 補足資料 高度専門データベース技術 SQL99 補足資料 ( 株 ) アイテック情報技術教育研究部 2012 年 2 月 14 日 ( はじめに ) この補足資料は,SQL99(ISO/IEC9075-2,JIS X3005-2) の必須機能 (Core SQL) のうち, SQL92に対し機能拡張が行われた部分で, 高度専門データベース技術 ( 以下, DB 技術 という ) に記載のないものについて記述する

More information

PowerPoint -O80_REP.PDF

PowerPoint -O80_REP.PDF Oracle8 Core Technology Seminar 1997109,31 Oracle8 OS: UNIX Oracle8 : Release8.0.3 Oracle8 Quick Start Package Lesson 5 -- Enhancements to Distributed Facilities Oracle8 -- - Oracle8 LOB Oracle8 -- - Updates

More information

KeyWeb Creator 概要 What s KeyWeb Creator? 動的なホームページを作成するためのツール!! 従来の Web ページ DB を利用した Web ページ <HTML> <HEAD> <TITLE>show_book</TITLE> </HEAD> <BODY> <DI

KeyWeb Creator 概要 What s KeyWeb Creator? 動的なホームページを作成するためのツール!! 従来の Web ページ DB を利用した Web ページ <HTML> <HEAD> <TITLE>show_book</TITLE> </HEAD> <BODY> <DI KeyWeb Creator R3.0 Beta 日本オラクル株式会社システム製品マーケティング部 1 KeyWeb Creator 概要 What s KeyWeb Creator? 動的なホームページを作成するためのツール!! 従来の Web ページ DB を利用した Web ページ show_book

More information

Consuming a simple Web Service

Consuming a simple Web Service Consume a Simple Web Service シンプルな Web サービスを利用する 目次 1 Introduction はじめに... 2 2 Importing a WSDL WSDL をインポートする... 3 3 Creating Logic to Call the Web Service Web サービスを呼び出すロジックを作成する... 5 4 Related Content

More information

Sharing the Development Database

Sharing the Development Database 開発データベースを共有する 目次 1 Prerequisites 準備... 2 2 Type of database データベースのタイプ... 2 3 Select the preferred database 希望のデータベースを選択する... 2 4 Start the database viewer データベース ビューワーを起動する... 3 5 Execute queries クエリを実行する...

More information

Microsoft PowerPoint - 3-Forms-Others.ppt

Microsoft PowerPoint - 3-Forms-Others.ppt 3 Form Builder その他の新機能 Oracle Developer R6.0 新機能 3-1 CONTENTS PL/SQL8 サポート 項目の色 フォントの直接設定 階層ツリー コントロール 戻り値を含む DML 実行時の動作 Forms でのパスワード管理 3-2 ここでは 2 章で触れなかった Form Builder のその他の新機能に付いて紹介します Oracle Developer

More information

Caché SQL に関するよくある質問

Caché SQL に関するよくある質問 Caché SQL に関するよく ある質問 Version 5.1 2006-03-14 InterSystems Corporation 1 Memorial Drive Cambridge MA 02142 www.intersystems.com Caché SQL に関するよくある質問 Caché Version 5.1 2006-03-14 Copyright 2006 InterSystems

More information

スライド 1

スライド 1 XML with SQLServer ~let's take fun when you can do it~ Presented by 夏椰 ( 今川美保 ) Agenda( その 1) XML XML XSLT XPath XML Schema XQuery Agenda( その 2) SQLServer における XML XML 型 XML Schema XQuery & XPath チェック制約

More information

Oracle Database Connect 2017 JPOUG

Oracle Database Connect 2017 JPOUG Oracle Database Connect 2017 / JPOUG 異なるデータベース間の SQL 比較と Oracle Database 12c の新機能 Noriyoshi Shinoda March 8, 2017 自己紹介篠田典良 ( しのだのりよし ) 所属 日本ヒューレット パッカード株式会社テクノロジーコンサルティング事業統括 現在の業務 Oracle Database をはじめ

More information

Microsoft Word - J-jdev_dba_db_developers.doc

Microsoft Word - J-jdev_dba_db_developers.doc Oracle JDeveloper 2006 1 : Oracle Oracle JDeveloper 2 Oracle JDeveloper :... 2... 4... 4... 4... 5... 6 SQL... 7... 8... 8 SQL... 10 PL/SQL... 11 PL/SQL... 11 Code Editor PL/SQL... 12 Navigator Structure...

More information

日本オラクル株式会社

日本オラクル株式会社 FISC 6 Oracle Database 10g ~ ~ : 2005 7 26 : 2005 7 31 : 1.0 2004 4 (* ) FISC ) (* ) FISC 6 (* FISC 6 ) FISC 6 Oracle g Database 10 (FISC) http://www.fisc.or.jp FISC http://www.fisc.or.jp/info/info/050307-1.htm

More information

Microsoft Word - Win-Outlook.docx

Microsoft Word - Win-Outlook.docx Microsoft Office Outlook での設定方法 (IMAP および POP 編 ) How to set up with Microsoft Office Outlook (IMAP and POP) 0. 事前に https://office365.iii.kyushu-u.ac.jp/login からサインインし 以下の手順で自分の基本アドレスをメモしておいてください Sign

More information

PostgreSQL カンファレンス 2013 証券取引バックオフィスにおける Oracle から PostgreSQL への マイグレーション SBI ジャパンネクスト証券株式会社 イアン バーウィック

PostgreSQL カンファレンス 2013 証券取引バックオフィスにおける Oracle から PostgreSQL への マイグレーション SBI ジャパンネクスト証券株式会社 イアン バーウィック PostgreSQL カンファレンス 2013 証券取引バックオフィスにおける Oracle から PostgreSQL への マイグレーション SBI ジャパンネクスト証券株式会社 イアン バーウィック PostgreSQL カンファレンス 2013 証券取引バックオフィスにおける Oracle から PostgreSQL への マイグレーション SBI ジャパンネクスト証券株式会社 イアン バーウィック

More information

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行

第 1 章 条件分岐 この章では 条件に応じて処理を分岐する方法について説明します 1. CASE 式で複雑な条件分岐を実現 2. 関数を使用した条件分岐 3. MERGE 文による条件に応じた DML の実行 はじめに コース概要と目的 SQL での作業の幅を広げるための応用的なテクニックをご説明します また 効率性の向上や正しい結果を得 るための記述方法など 実践的な記述方法についても併せてご説明します 本コースは SQL の応用的な記述テクニックとしてどのようなものがあるかを 1 日で広く浅くご理解いた だくことを目的としたコースです 細かな構文やオプションの習得は目的としておりませんことをご了承 ください

More information

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String

1.SqlCtl クラスリファレンス SqlCtl クラスのリファレンスを以下に示します メソッドの実行中にエラーが発生した場合は標準エラー出力にメッセージを出力します (1)Connect() メソッド データベースへ connect 要求を行います boolean Connect(String 目次 1.SqlCtl クラスリファレンス 2 (1)Connect() メソッド 2 (2)DisConnect() メソッド 3 (3)Commit() メソッド 3 (4)Rollback() メソッド 4 2.SqlStm クラスリファレンス 5 (1)Prepare() メソッド 5 (2)Execute() メソッド 6 (3)Release() メソッド 6 (4)Immediate()

More information

untitled

untitled Oracle Direct Seminar !? Oracle Database 11g - - Agenda Copyright 2009, Oracle. All rights reserved. 2 Agenda Copyright 2009, Oracle. All

More information

Microsoft PowerPoint - Tutorial_6.ppt

Microsoft PowerPoint - Tutorial_6.ppt 6 RapidApps を使ったスピーディーなアプリ開発 1 課題手順 RapidApps でアプリを開発する 開発した Kiosk アプリの動作を確認する 2 RapidApps でアプリを開発する (1) Bluemix RapidApps は Web やモバイル アプリをスピーディーに設計 / 開発し Bluemix にデプロイすることができるビジュアル開発ツールです ここでは RapidApps

More information

第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター

第 2 章 問合せの基本操作 この章では データベースから情報を検索する際に使用する SELECT コマンド および SELECT コマンドと 同時に使用する句について説明します 1. 問合せとは 2. 基本的な問合せ 3. 列の別名 4. 重複行を一意にする 5. 検索行の絞込み 6. 文字パター はじめに コース概要と目的 データベース処理に使用する SQL の基本構文と使用方法について説明します 受講対象者 SQL を使用してアプリケーション開発される方 管理者となられる方 前提条件 Oracle 概要 コースを受講された方 もしくは同等の知識をお持ちの方 テキスト内の記述について 構文 [ ] 省略可能 { A B } A または B のどちらかを選択 n _ 数値の指定 デフォルト値

More information

Oracle Lite Tutorial

Oracle Lite Tutorial GrapeCity -.NET with GrapeCity - FlexGrid Creation Date: Nov. 30, 2005 Last Update: Nov. 30, 2005 Version: 1.0 Document Control Internal Use Only Author Hiroshi Ota Change Logs Date Author Version Change

More information

intra-mart Accel Platform — OData for SAP HANA セットアップガイド   初版  

intra-mart Accel Platform — OData for SAP HANA セットアップガイド   初版   Copyright 2016 NTT DATA INTRAMART CORPORATION 1 Top 目次 1. 改訂情報 2. はじめに 2.1. 本書の目的 2.2. 前提条件 2.3. 対象読者 2.4. 注意事項 3. 概要 3.1. OData 連携について 3.2. OData について 3.3. SAP HANA 連携について 3.4. アクター 3.5. セットアップの手順について

More information

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~ .NET プログラマー早期育成ドリル VB 編 付録文法早見表 本資料は UUM01W:.NET プログラマー早期育成ドリル VB 編コードリーディング もしくは UUM02W:.NET プログラマー早期育成ドリル VB 編コードライティング を ご購入頂いた方にのみ提供される資料です 資料内容の転載はご遠慮下さい VB プログラミング文法早見表 < 基本文法 > 名前空間の定義 Namespace

More information

PowerPoint Presentation

PowerPoint Presentation Webデザイン特別プログラムデータベース実習編 3 MySQL 演習, phpmyadmin 静岡理工科大学総合情報学部幸谷智紀 http://na-inet.jp/ RDB の基礎の基礎 RDB(Relational DataBase) はデータを集合として扱う データの取り扱いはテーブル (= 集合 ) の演算 ( 和集合, 積集合 ) と同じ データベースには複数のテーブルを作ることができる

More information

Postgres Plus Advanced Server 9.3パーティションテーブルの特徴と性能検証レポート

Postgres Plus Advanced Server 9.3パーティションテーブルの特徴と性能検証レポート Postgres Plus Advanced Server 9.3 パーティションテーブルの特徴と性能検証レポート ~ データロード編 ~ v1.1 テクノロジーコンサルティング事業統括オープンソース部高橋智雄 2014 年 7 月 変更履歴 版 日付 作成 修正者 説明 1.0 2014/5/19 日本 HP 高橋智雄 初版作成 1.1 2014/7/8 日本 HP 高橋智雄 表現を微修正 2 はじめに

More information

Oracle9iAS Single Sign-On サードパーティ製品との統合

Oracle9iAS Single Sign-On サードパーティ製品との統合 Oracle9iAS Single Sign-On サードパーティ製品との統合 リリース 3.0.9 2001 年 11 月部品番号 : J05371-01 原典情報 : Oracle9iAS Single Sign-On Integration with Third-Party Single Sign-On ProductsA95114-01 Oracle9iAS Single Sign-On は

More information

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP

Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest & Valid 1z0-882-JP itexamdump 최고이자최신인 IT 인증시험덤프 http://www.itexamdump.com 일년무료업데이트서비스제공 Exam : 1z0-882 日本語 (JPN) Title : Oracle Certified Professional, MySQL 5.6 Developer Vendor : Oracle Version : DEMO 1 / 4 Get Latest

More information

ClearCase - SD4_JP

ClearCase - SD4_JP ClearCase を設定して SimDiff 4 を使用するには 目次 はじめに... 2 ClearCase について... 2 SimDiff について... 2 SimDiff Type Manager について... 2 概要... 2 設定の詳細... 3 クライアント設定について... 3 SimDiff Type Manager のインストール... 3 map 設定ファイルの変更...

More information

橡j_Oracle_whitepaper.PDF

橡j_Oracle_whitepaper.PDF Pervasive-Oracle 1 1 Pervasive Software Pervasive-Oracle / Pervasive Oracle Pervasive-Oracle ISV Pervasive-Oracle Pervasive.SQL Oracle 2 Pervasive-Oracle Pervasive-Oracle Pervasive.SQL Oracle Open Database

More information

intra-mart Accel Platform

intra-mart Accel Platform セットアップガイド (WebSphere 編 ) 第 4 版 2014-01-01 1 目次 intra-mart Accel Platform 改訂情報 はじめに 本書の目的 前提条件 対象読者 各種インストール 設定変更 intra-mart Accel Platform 構成ファイルの作成 WebSphereの設定 Java VM 引数の設定 トランザクション タイムアウトの設定 データベース接続の設定

More information

<4D F736F F F696E74202D20352D335F8D5C90AC CF909482CC90B690AC82C695D28F572E707074>

<4D F736F F F696E74202D20352D335F8D5C90AC CF909482CC90B690AC82C695D28F572E707074> RD_301 構成要素一覧と検索 から構成要素の編集辞書 ( 削除 ) を作る 作成 ( 編集 ) する削除辞書を開きます 構成要素を検索します ドラック & ドロップでも OK 範囲を選択して右クリック 右クリック 削除辞書に登録 ( 追加 ) したい構成要素を選択しコピーします 削除辞書に追加 ( 貼りつけ ) ます Step5. 削除辞書に構成要素が登録 ( 追加 ) されます 構成要素一覧と検索

More information

CodeGear Developer Camp

CodeGear Developer Camp B4 InterBase テクニカルセッション InterBase セキュリティパワーアップ セキュリティ改善のコツとツール キムラデービー代表木村明治 ( きむらめいじ ) http://kimuradb.com 1 アジェンダ DBセキュリティとは? InterBase 本体が持つセキュリティ機能 通信経路の暗号化 格納データの暗号化 2 DB セキュリティとは? 3 概略全体図 InterBase

More information

Microsoft Word - HowToConvertIdwToDwg.doc

Microsoft Word - HowToConvertIdwToDwg.doc IDW から DWG 形式への保存方法 1. 準備 Inventor で図面化したドキュメント (idw) を DWG 形式に変換する手順について紹介します Inventor の コピーに名前を付けて保存 の機能だけでは 画層や寸法スタイル 文字スタイルの設定が 一般的に AutoCAD Mechanical( 以下 ACM) で使われる設定と異なるため そのままでは AutoCAD や ACM で編集するには不便です

More information

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB

3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB 3/7 マイグレーション開発方針 顧客名 0 作成者 根岸正 < プログラム移行方針 > システム名称 A-VX システムマイグレーション作成日 2015/09/01 < COBOL 資産のプログラム移行 > COBOLソース ( メインとCOPYLIB) を入力としてSCC 言語変換ツールにてVB.netソリューションを作成します言語変換後にSDK( ソフトウェア開発キット ) にてデバッグおよびビルドにて実行可能アプリケーションを作成します

More information

TALON Tips < カレンダー ( 月別 ) の画面を表示する > 株式会社 HOIPOI 第 1.1 版 p. 1

TALON Tips < カレンダー ( 月別 ) の画面を表示する > 株式会社 HOIPOI 第 1.1 版 p. 1 TALON Tips < カレンダー ( 月別 ) の画面を表示する > 株式会社 HOIPOI 第 1.1 版 p. 1 1 目次 1 目次... 2 2 はじめに... 3 3 Tips セットアップ... 4 3.1 事前準備... 4 3.2 事前準備 2... 4 3.3 セットアップ... 4 3.4 セットアップ ( その他 )... 5 4 Tips 概要... 6 4.1 概要...

More information

Python によるジオプロセシング スクリプト入門

Python によるジオプロセシング スクリプト入門 ... 1 アイコンの説明... 8 第 1 章イントロダクション... 9 本コースの目的... 11 コース内容 1 日目... 11 コース内容 2 日目... 12 付属資料... 12 講習資料... 13 イントロダクション... 13 ArcGIS の紹介... 14 Web ページ : サポート情報... 14 Web ページ :ArcGIS を学べる... 15 Web ページ :ArcGIS

More information

復習 (SQL 文 ) 3/6 復習 (SQL 文 ) 4/6 表の作成 CREATE TABLE...; 表の削除 DROP TABLE テーブル名 ; 表内のデータが全て消えてしまう. 表内のデータを得る SELECT 列名 FROM 表名...; 表にデータを挿入する. INSERT INTO

復習 (SQL 文 ) 3/6 復習 (SQL 文 ) 4/6 表の作成 CREATE TABLE...; 表の削除 DROP TABLE テーブル名 ; 表内のデータが全て消えてしまう. 表内のデータを得る SELECT 列名 FROM 表名...; 表にデータを挿入する. INSERT INTO SQLite SQLite3 http://www.ns.kogakuin.ac.jp/~ct13140/prog/ オープンソース ( フリー )RDBMS 実装の 1 個 http://www.sqlite.org/ 現在,3.6 が最新版. SQLite 2.x と SQLite 3.x が有名. 特徴 RDBMS サーバプロセスの起動が不要. 1 データベース,1 ファイル で格納.. つまり

More information

ユーザ デバイス プロファイルの ファイル形式

ユーザ デバイス プロファイルの ファイル形式 CHAPTER 34 CSV データファイルの作成にテキストエディタを使用する場合 デバイスフィールドと回線フィールドを CSV データファイル内で識別するファイル形式を使用する必要があります このファイル形式には次のオプションがあります Default User Device Profile: ユーザデバイスプロファイルのデバイスフィールドと回線フィールドの事前決定済みの組み合せを含む Simple

More information

(Microsoft Word - Lab4-Oracle\202\251\202\347\202\314\203f\201[\203^\203x\201[\203X\210\332\215s.doc)

(Microsoft Word - Lab4-Oracle\202\251\202\347\202\314\203f\201[\203^\203x\201[\203X\210\332\215s.doc) [Lab 4] Oracle からのデータベース移行 2009 年 12 月日本アイアイ ビービー エムエム株式会社 Contents CONTENTS...2 1. はじめに...3 2. データベース作成...3 2.1 Oracle 互換機能の有効化...4 2.2 データベースパスのディレクトリー作成...5 2.3 データベース LABDB を作成...6 2.4 作成したデータベースの確認...7

More information

Microsoft Word - 430_15_Developing_Stored_Procedure.doc

Microsoft Word - 430_15_Developing_Stored_Procedure.doc Java Oracle 1998 11 Java 3 Java Web GUI Java Java Java Oracle Java Oracle8i Oracle / Oracle Java Virtual Machine VM CORBA Enterprise JavaBeans Oracle Java Java Java Oracle Oracle Java Virtual Machine Oracle

More information

データアダプタ概要

データアダプタ概要 データベース TableAdapter クエリを実行する方法 TableAdapter クエリは アプリケーションがデータベースに対して実行出来る SQL ステートメントやストアドプロシージャで TableAdapter で型指定されたメソッドと仕て公開される TableAdapter クエリは 所有るオブジェクトのメソッドと同様に 関連付けられたメソッドを呼び出す事に依り実行出来る TableAdapter

More information

PL/SQLからのオペレーティング・システム・コマンドの実行

PL/SQLからのオペレーティング・システム・コマンドの実行 PL/SQL からのオペレーティング システム コマンドの実行 Oracle ホワイト ペーパー 2008 年 7 月 注 : 本書は オラクルの一般的な製品の方向性を示すことが目的です また 情報提供を唯一の目的とするものであり いかなる契約にも組み込むことはできません 下記の事項は マテリアルやコード 機能の提供を確約するものではなく また 購買を決定する際の判断材料とはなりえません オラクルの製品に関して記載されている機能の開発

More information

Python によるジオプロセシング スクリプト入門

Python によるジオプロセシング スクリプト入門 アイコンの説明... 8 第 1 章イントロダクション... 9 本コースの目的... 11 講習内容... 11 講習資料... 12 イントロダクション... 12 ArcGIS... 13 Web サイト... 13 開発者向けプログラム / サービス... 14 演習 1: 演習環境の構築... 15 ステップ 1: Windows へのログオン ( オプション )... 15 ステップ 2:

More information

Microsoft PowerPoint pptx

Microsoft PowerPoint pptx データベース 第 11 回 (2009 年 11 月 27 日 ) テーブル結合と集計 ( 演習 ) 第 11 回のテーマ 前回より シラバスから離れ 進捗状況に合わせて全体構成を変更しています テーマ1: テーブルの結合 テーマ 2: 結合した結果からの様々な検索 テーマ3: 集計の方法 今日学ぶべきことがら Select 文のさまざまな表現 Natural join sum(*) orrder

More information

,, create table drop table alter table

,, create table drop table alter table PostgreSQL 1 1 2 1 3,, 2 3.1 - create table........................... 2 3.2 - drop table............................ 3 3.3 - alter table............................ 4 4 - copy 5 4.1..................................

More information

プレポスト【解説】

プレポスト【解説】 コース名 : シェルの機能とプログラミング ~UNIX/Linux の効率的使用を目指して ~ 1 UNIX および Linux の主な構成要素は シェル コマンド カーネルです プロセスとは コマンドやプログラムを実行する単位のことなので プロセスに関する記述は誤りです UNIX および Linux のユーザーインターフェースは シェル です コマンドを解釈するという機能から コマンドインタープリタであるともいえます

More information

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版  

— intra-mart Accel Platform セットアップガイド (WebSphere編)   第7版   Copyright 2013 NTT DATA INTRAMART CORPORATION 1 Top 目次 intra-mart Accel Platform セットアップガイド (WebSphere 編 ) 第 7 版 2016-12-01 改訂情報はじめに本書の目的前提条件対象読者各種インストール 設定変更 intra-mart Accel Platform 構成ファイルの作成 WebSphereの設定

More information

Chapter Two

Chapter Two Database 第 8 回 :SQL 言語 ( データベース操作 ) 上智大学理工学部情報理工学科 高岡詠子 No reproduction or republication without written permission. 許可のない転載 再発行を禁止します 1 Schedule 日程 内容 第 1 回 10 月 6 日 ガイダンス, データベースとは? 第 2 回 10 月 13 日 三層スキーマ,

More information

Chapter Two

Chapter Two Database 第 9 回 :SQL 言語 ( データベース操作 : 集合関数 抽出条件 副問い合わせ ) 上智大学理工学部情報理工学科 高岡詠子 No reproduction or republication without written permission. 許可のない転載 再発行を禁止します 2011/12/8 2011 Eiko Takaoka All Rights Reserved.

More information

Microsoft PowerPoint - 09.pptx

Microsoft PowerPoint - 09.pptx 情報処理 Ⅱ 第 9 回 2014 年 12 月 22 日 ( 月 ) 関数とは なぜ関数 関数の分類 自作関数 : 自分で定義する. ユーザ関数 ユーザ定義関数 などともいう. 本日のテーマ ライブラリ関数 : 出来合いのもの.printf など. なぜ関数を定義するのか? 処理を共通化 ( 一般化 ) する プログラムの見通しをよくする 機能分割 ( モジュール化, 再利用 ) 責任 ( あるいは不具合の発生源

More information

Microsoft Word - tutorial3-dbreverse.docx

Microsoft Word - tutorial3-dbreverse.docx 株式会社チェンジビジョン使用バージョン :astah* 6.0, 6.1 [ ] サンプル サポート対象外 目次 DB リバースを使ってみよう ( サンプル サポート対象外 ) 2 ご利用の前に 2 予備知識 2 データベースの環境設定をしてみよう 2 astah* データベースリバースコンポーネントを使用してみよう 5 作成した asta ファイルを astah* professional で開いてみよう

More information

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成 KDDI ホスティングサービス (G120, G200) ブック ASP.NET 利用ガイド ( ご参考資料 ) rev.1.0 KDDI 株式会社 1 ( 目次 ) 1. はじめに... 3 2. 開発環境の準備... 3 2.1 仮想ディレクトリーの作成... 3 2.2 ASP.NET のWeb アプリケーション開発環境準備... 7 3. データベースの作成...10 3.1 データベースの追加...10

More information

Oracle Lite Tutorial

Oracle Lite Tutorial GrapeCity -.NET with GrapeCity - SPREAD Creation Date: Nov. 30, 2005 Last Update: Nov. 30, 2005 Version: 1.0 Document Control Internal Use Only Author Hiroshi Ota Change Logs Date Author Version Change

More information

メソッドのまとめ

メソッドのまとめ メソッド (4) 擬似コードテスト技法 http://java.cis.k.hosei.ac.jp/ 授業の前に自己点検以下のことがらを友達に説明できますか? メソッドの宣言とは 起動とは何ですか メソッドの宣言はどのように書きますか メソッドの宣言はどこに置きますか メソッドの起動はどのようにしますか メソッドの仮引数 実引数 戻り値とは何ですか メソッドの起動にあたって実引数はどのようにして仮引数に渡されますか

More information

クラウド内の Java - 動画スクリプト 皆さん こんにちは Steve Perry です 私たちが作成した人事アプリケーションを覚えていますか? 今回は そのアプリケーションをクラウド内で実行しましょう コードは GitHub の

クラウド内の Java - 動画スクリプト 皆さん こんにちは Steve Perry です 私たちが作成した人事アプリケーションを覚えていますか? 今回は そのアプリケーションをクラウド内で実行しましょう コードは GitHub の クラウド内の Java - 動画スクリプト 皆さん こんにちは Steve Perry です 私たちが作成した人事アプリケーションを覚えていますか? 今回は そのアプリケーションをクラウド内で実行しましょう コードは GitHub の https://github.com/makotogo/javainthecloud からダウンロードでき この動画では 次の方法を説明し WebSphere Application

More information

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

Case 0 sqlcmdi.parameters(?tencode).value = Iidata(0) sqlcmdi.parameters(?tenname).value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else Imports MySql.Data.MySqlClient Imports System.IO Public Class Form1 中間省略 Private Sub コマンドテストCToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles コマンドテストCToolStripMenuItem.Click

More information

PostgreSQL Plus 管理者ガイド

PostgreSQL Plus 管理者ガイド 2.4 旧バージョンからの移行 ここでは PostgreSQL Plus V1.0 および V1.1 から PostgreSQL Plus V2.0 にインスタンスの資産 を移行する手順について説明します PostgreSQL Plus V1.0 および V1.1 は PostgreSQL 7.3 をベースとしています また PostgreSQL Plus V2.0 は PostgreSQL 7.4

More information

Maser - User Operation Manual

Maser - User Operation Manual Maser 3 Cell Innovation User Operation Manual 2013.4.1 1 目次 1. はじめに... 3 1.1. 推奨動作環境... 3 2. データの登録... 4 2.1. プロジェクトの作成... 4 2.2. Projectへのデータのアップロード... 8 2.2.1. HTTPSでのアップロード... 8 2.2.2. SFTPでのアップロード...

More information

Prog1_10th

Prog1_10th 2012 年 6 月 20 日 ( 木 ) 実施ポインタ変数と文字列前回は, ポインタ演算が用いられる典型的な例として, ポインタ変数が 1 次元配列を指す場合を挙げたが, 特に,char 型の配列に格納された文字列に対し, ポインタ変数に配列の 0 番の要素の先頭アドレスを代入して文字列を指すことで, 配列そのものを操作するよりも便利な利用法が存在する なお, 文字列リテラルは, その文字列が格納されている領域の先頭アドレスを表すので,

More information

Oracle Application Expressの機能の最大活用-インタラクティブ・レポート

Oracle Application Expressの機能の最大活用-インタラクティブ・レポート Building Dynamic Actions in Oracle Application Express 4.0 動的アクション (Dynamic Actions) Copyright(c) 2010, Oracle. All rights reserved. Copyright(c) 2010, Oracle. All rights reserved. 2 / 44 Building Dynamic

More information

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ

任意の間隔での FTP 画像送信イベントの設定方法 はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページ はじめに 本ドキュメントでは AXIS ネットワークカメラ / ビデオエンコーダにおいて任意の間隔で画像を FTP サー バーへ送信するイベントの設定手順を説明します 設定手順手順 1:AXIS ネットワークカメラ / ビデオエンコーダの設定ページにアクセスする 1.Web ブラウザを起動します FW v6.50 以下の場合は Internet Explorer を FW v7.10 以降の場合は

More information

CLUSTERPRO MC StorageSaver istorage M シリーズ使用時の設定手順 (HP-UX 版 Linux 版 Windows 版 ) 2013(Apr) NEC Corporation istorage M シリーズを使用する場合の StorageSaver 設定手順 (H

CLUSTERPRO MC StorageSaver istorage M シリーズ使用時の設定手順 (HP-UX 版 Linux 版 Windows 版 ) 2013(Apr) NEC Corporation istorage M シリーズを使用する場合の StorageSaver 設定手順 (H CLUSTERPRO MC StorageSaver istorage M シリーズ使用時の設定手順 (HP-UX 版 Linux 版 Windows 版 ) 2013(Apr) NEC Corporation istorage M シリーズを使用する場合の StorageSaver 設定手順 (HP-UX 版 ) istorage M シリーズを使用する場合の StorageSaver 設定手順

More information

PowerPoint プレゼンテーション

PowerPoint プレゼンテーション イチからはじめる Linux サーバ構築ハンズオン 事前準備用資料 株式会社リーデックス はじめに 弊社の勉強会にご興味を持っていただきありがとうございます Linuxサーバ構築ハンズオンを受講いただくにあたり 必要なソフトのインストールと環境構築の手順をまとめました 資料はWindows 環境前提で記載してありますが Macでも少しの読み替えで対応できると思います 当日の時間内にインストールからスタートするとインターネットの回線状況によっては環境構築だけで

More information

com.ibm.etools.egl.jsfsearch.tutorial.doc.ps

com.ibm.etools.egl.jsfsearch.tutorial.doc.ps EGL JSF ii EGL JSF EGL JSF.. 1................. 1 1:.... 3 Web.......... 3........... 3........ 4......... 7 2:...... 7..... 7 SQL.... 8 JSF.... 10 Web.... 12......... 13 3: OR....... 14 OR... 14.15 OR.....

More information

(Microsoft Word - IBM i \203C\203\223\203^\201[\203l\203b\203g\203Z\203~\203i\201[_XMLTABLE.doc)

(Microsoft Word - IBM i \203C\203\223\203^\201[\203l\203b\203g\203Z\203~\203i\201[_XMLTABLE.doc) DB2 for i XMLTABLE XML データ タイプを使用した RPG アプリケーション開発のご紹介 はじめにアプリケーションの近代化 Web 化が近年多くの企業において検討されています IBM i では ILE RPG(RPGⅣ) により Java 等の複数言語の混在 XMLサポートなどが可能となり アプリケーションの近代化 Web 化へ対応できるよう機能拡張がなされています Webアプリケーションではデータの受け渡しにXMLが使用されるケースがあります

More information

Taro php.jtdc

Taro php.jtdc 4-5 PHP 演習問題 演習 1 フォルダ \data\dbserver\php のPHPスクリプト randamu.php を使い, データベース testdb のテーブル table1 を取り込み, ランダムにデータを表示させるWebサーバを構築し, クライアント( Windows 側 ) のブラウザURL epc**.cen.hic.ac.jp/randamu.php を入力し, 確認する

More information

untitled

untitled Release 11.5/Composer 2002-2006 Unify Corporation All rights reserved. Sacramento California, USA No part of this tutorial may be reproduced, transmitted, transcribed, stored in a retrieval system, or

More information

電話機のファイル形式

電話機のファイル形式 この章では テキスト エディタを使用して作成する CSV データ ファイルのファイル形式を設定 する方法について説明します 電話機 CSV データ ファイルを作成するためのテキスト エディタ, 1 ページ の検索, 2 ページ CSV データ ファイルの電話機ファイル形式の設定, 3 ページ テキストベースのファイル形式と CSV データ ファイルの関連付け, 7 ページ 電話機 CSV データ ファイルを作成するためのテキスト

More information

CLUSTERPRO MC StorageSaver istorage M シリーズ使用時の設定手順 (HP-UX 版 Linux 版 Windows 版 ) 2013(Sep) NEC Corporation istorage M シリーズを使用する場合の StorageSaver 設定手順 (H

CLUSTERPRO MC StorageSaver istorage M シリーズ使用時の設定手順 (HP-UX 版 Linux 版 Windows 版 ) 2013(Sep) NEC Corporation istorage M シリーズを使用する場合の StorageSaver 設定手順 (H CLUSTERPRO MC StorageSaver istorage M シリーズ使用時の設定手順 (HP-UX 版 Linux 版 Windows 版 ) 2013(Sep) NEC Corporation istorage M シリーズを使用する場合の StorageSaver 設定手順 (HP-UX 版 ) istorage M シリーズを使用する場合の StorageSaver 設定手順

More information

プレポスト【問題】

プレポスト【問題】 1/5 ページ プレポスト データベース基礎 受講日程受講番号氏名 1 データベースの特徴で間違っているものを選びなさい 1. データの一元管理が可能 2. データの重複が少ない 3. プログラムとの関係が1 対 1 4. データの整合性の確保 2 ANSI/SPARC による 3 層スキーマについて正しいものを選びなさい 1. 外部スキーマ : プログラムに必要な部分のデータ構造を定義概念スキーマ

More information

tkk0408nari

tkk0408nari SQLStatement Class Sql Database SQL Structured Query Language( ) ISO JIS http://www.techscore.com/tech/sql/02_02.html Database sql Perl Java SQL ( ) create table tu_data ( id integer not null, -- id aid

More information

はじめに コースの概要と目的条件分岐の方法や複雑な集計の手法など SQL のコーディングの幅を広げるためのテクニックについて説明します また パフォーマンスを考慮した記述方法や正しい結果を取得するための記述方法などについても あわせて説明します 本コースでは 実践的な SQL の記述手法を広く浅く紹

はじめに コースの概要と目的条件分岐の方法や複雑な集計の手法など SQL のコーディングの幅を広げるためのテクニックについて説明します また パフォーマンスを考慮した記述方法や正しい結果を取得するための記述方法などについても あわせて説明します 本コースでは 実践的な SQL の記述手法を広く浅く紹 はじめに コースの概要と目的条件分岐の方法や複雑な集計の手法など SQL のコーディングの幅を広げるためのテクニックについて説明します また パフォーマンスを考慮した記述方法や正しい結果を取得するための記述方法などについても あわせて説明します 本コースでは 実践的な SQL の記述手法を広く浅く紹介することを目的としているため 細かな構文やオプションの習得を目的とはしていないことを 予めご了承ください

More information

CAC

CAC VOL.24NO.1 61 IMS Transaction 3270 DataBase Transaction OS/370 IMS Traditional Transaction Web Browser Transaction Internet WWW AP IIS APache WebLogic Websphere DataBase Oracle DB2 SQL Server Web Browser

More information

Oracle SQL Developer Data Modeler

Oracle SQL Developer Data Modeler Oracle SQL Developer Data Modeler テクニカル レビュー - 2009 年 6 月 アジェンダ テクニカル レビューおよび機能レビュー 開発者の生産性に重点 Oracle SQL Developer Data Modeler の概要 対象 テクノロジー 機能のレビュー パッケージの更新 Oracle SQL Developer

More information

Oracle Rdb: SQL Update

Oracle Rdb: SQL Update Day1-7 SQL Oracle Rdb 2006 4 3 2006 4 5 2005-2006, Oracle Corporation RMU Extract SQL DDL SQL 2 7.1 7.1.3 SQL V7.1.4.1 SQL 4 7.2 Rdb RMU Oracle Rdb Rdb Installation and Configuration Guide SQL/Services

More information

データベースアクセス

データベースアクセス データベースアクセスコンポーネント 1. 概要 データベースアクセスコンポーネントとは SQL データベースにアクセスして SQL 文を実行することによりデータベース検索を行う機能を提供するコンポーネントです また データベースアクセスコンポーネントでは データベースの構成情報 接続情報 エラー情報等を取得することも可能です データベースアクセスコンポーネントは アプリケーションビルダーのメニューから以下のように選びます

More information

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第7版   None

intra-mart Accel Platform — TableMaintenance ユーザ操作ガイド   第7版   None クイック検索検索 目次 Copyright 2012 NTT DATA INTRAMART CORPORATION 1 Top 目次 改訂情報概要レコードの追加 / 更新 / 削除レコードの編集レコードを削除するレコードの一括インポートとエクスポート日本語のキャプション表示 2 改訂情報 変更年月日 変更内容 2012-10-01 初版 2013-10-01 第 2 版下記が追加 変更されました 対応するフィールドの型

More information

スライド 1

スライド 1 Hos-CanR 2.5 3.0 クライアント サーバー (CS) 版データ移行マニュアル Hos-CanR クライアント サーバー (CS) 版 Ver. 2.5 Ver. 3.0 データ移行マニュアル システム管理者用 Ver. 2 バージョン改訂日付改訂内容 Ver. 1 2010/3/15 初版 Ver. 2 2010/12/10 作業対象コンピュータのアイコン追加 Hos-CanR 2.5

More information

Si 知識情報処理

Si 知識情報処理 242311 Si, 285301 MS 第 12 回 竹平真則 takemasa@auecc.aichi-edu.ac.jp 2015/12/21 1 本日の内容 1. 先週のおさらい 2. PHP のスクリプトを実際に動かしてみる 3. RDB についての説明 2015/12/21 2 資料の URL http://peacenet.info/m2is 2015/12/21 3 注意事項 ( その

More information

セットアップカード

セットアップカード NEC COBOL SQL アクセス Client Runtime Ver1.0 COBOL SQL アクセス Client Runtime Ver1.0 (1 年間保守付 ) COBOL SQL アクセス Client Runtime Ver1.0 (1 年間時間延長保守付 ) セットアップカード ごあいさつ このたびは COBOL SQL アクセス Client Runtime Ver1.0 (

More information

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right

メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 Copyright 2007 SRA OSS, Inc. Japan All right メール全文検索アプリケーション Sylph-Searcher のご紹介 SRA OSS, Inc. 日本支社技術部チーフエンジニア Sylpheed 開発者 山本博之 yamamoto@sraoss.co.jp Sylph-Searcher とは Sylpheed 向け電子メール全文検索アプリケーション PostgreSQL 8.2の全文検索機能を利用 Linux/Unix Windows 2000

More information

スクールCOBOL2002

スクールCOBOL2002 (h) 登録集原文の指定方法 . 登録集原文の指定方法 複数の COBOL プログラムに共通の記述を別のソースファイルとしておき COPY 文で取り込むことができます 登録集原文の概念図を下欄に示します このようにすると コーディング量を削減でき 記述ミスもなくなるため 開発効率を高めることができます ここでは 第 章で実習した reidai.cbl というソースファイルの DATA0 と YYMMDD

More information