ODTを使ったVisual StudioからのPL/SQL開発.NETユーザー必見! Oracle 10gのお作法(2)(2/4 ページ)

» 2007年05月07日 00時00分 公開
[三谷亮太,日本オラクル]

ODTによるストアドプロシージャの作成

 ODTからストアドプロシージャを作成するには、Oracleエクスプローラ上で[プロシージャ]を右クリックし[新規PL/SQLプロシージャ]を選択します(図9)。

図9 Oracleエクスプローラから新規PL/SQLプロシージャを作成 図9 Oracleエクスプローラから新規PL/SQLプロシージャを作成

 [新規PL/SQLプロシージャ]ダイアログが表示されたら、[プロシージャ名]を「REGISTDOZE」、[パラメータ]を表2のように設定します(図10)。

名前 方向 データ型
ID IN NUMBER
表2 プロシージャのパラメータ設定
図10 [新規PL/SQLプロシージャ]ダイアログでの設定値 図10 [新規PL/SQLプロシージャ]ダイアログでの設定値

 [OK]を押下し、表示された編集ウィンドウにリスト1のPL/SQLを入力します。これはDOZE表にSELECT文を実行し、テーブルに登録がなければINSERT、すでに登録済みならUPDATEを行う単純なストアドプロシージャです。

PROCEDURE "SCOTT"."REGISTDOZE" (
  "ID" IN NUMBER) IS
  
V_EMPNO DOZE.EMPNO%TYPE;

BEGIN

SELECT EMPNO INTO V_EMPNO FROM SCOTT.DOZE WHERE EMPNO = ID;
UPDATE DOZE SET "COUNT" = COUNT +1, RECENT  = SYSDATE WHERE EMPNO = ID;

  EXCEPTION   --DOZE表に無い場合はINSERT
    WHEN NO_DATA_FOUND THEN
      INSERT INTO SCOTT.DOZE VALUES(ID,1,SYSDATE,SYSDATE);

END "REGISTDOZE";
リスト1 居眠り回数を登録/更新ストアドプロシージャ

 なお、Oracleオブジェクトに対してもIntelliSenseが利用可能です。例えば「SCOTT.」と入力するとSCOTTスキーマにあるオブジェクトがポップアップ表示されます(図11)。

図11 ODTのIntelliSense機能 図11 ODTのIntelliSense機能

ストアドプロシージャのデバッグ

 デバッグを行うために、SCOTTユーザーにデバッグ権限を付与します。SCOTTユーザーと同様にSYSユーザーに対する接続を作成し、右クリックから[問合せウィンドウ]を選択します(図12)。

図12 SYSユーザー[問合せウィンドウ]を開く 図12 SYSユーザー[問合せウィンドウ]を開く

 表示された[問合せウィンドウ]にリスト2の2行を入力し、右下の[実行]をクリックします。

GRANT DEBUG CONNECT SESSION TO SCOTT;
GRANT DEBUG ANY PROCEDURE TO SCOTT;
リスト2 SCOTTユーザーにデバッグ権限を付与

 次に、先ほど作成したストアドプロシージャをデバッグコンパイルし、デバッグ可能な状態にします。プロシージャのREGISTDOZEを右クリックし[コンパイル・デバッグ]を選択します。コンパイルが成功するとREGISTDOZEのアイコンが変化します(図13)。

図13 デバッグコンパイルの実行 図13 デバッグコンパイルの実行

 デバッグコンパイルしたREGISTDOZEにブレークポイントを設定します。INSERT文の左枠部分をクリック、またはF9キーを押してブレークポイントを設定します(図14)。

図14 ブレークポイントの設定 図14 ブレークポイントの設定

 REGISTDOZEを右クリックし、[デバッグの実行]を選択するとパラメータの入力画面が表示されますので、ALLENの社員番号「7499」を入力します(図15)。

図15 デバッグの実行 図15 デバッグの実行

 [OK]を押すとデバッグが開始され、先ほど設定したブレークポイントで止まります。F11キーでステップ実行し、INSERT文が実行されることを確認します(図16)。

図16 ブレークポイントで停止 図16 ブレークポイントで停止

 実行後、DOZEテーブルのデータを表示させると正常に登録されていることが確認できます(図17)。

図17 UPDATE処理の確認 図17 UPDATE処理の確認

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。