PL/SQL(Oracle)をVSCodeで編集したい

Visual Studio Code

エディタの主流となってきた感のある、Visual Studio Codeですが、様々な拡張機能があり色々と使える場面が増えてきました。当サイトでもVBA(Excelマクロ)開発時の手順を以前紹介しています。

拡張機能の中で、Oracleが提供している機能があることに気がつき、この機能を使用することで単純なSQL文の実行からストアドプロシージャ(PL/SQL)の実行まで、やろうと思えばできることがわかりました。この記事では、Oracle提供の拡張機能を用いて、テーブルデータ参照、SQL実行、PL/SQLの実行までできるように紹介します。

まずはともあれ、必要な環境

以下の環境が必要になるので、まずは用意しましょう。

  • OracleDB環境
  • Visual Studio Code
  • Oracle Developer Tools for VS Code(拡張機能)

OracleDB環境は繋いで動かせる環境であれば、サーバーでもローカルでもどちらでもOKです。Visual Studio Codeは最新のものでよいと思います。まずは、Visual Studio Codeをインストールしてください。
Visual Studio Code および OracleDBのインストール方法は紙幅の都合上、割愛させていただきます。

Oracle Developer Tools for VS Code

Visual Studio Codeをインストールしたら、拡張機能の検索を行います。「Oracle」などで検索を行えば、Oracle Developer Tools for VS Codeが見つかると思いますので、該当ページからインストールを行います。

インストール後は、Visual Studio Codeの画面左側のバーにデータベースのアイコンが追加表示されているはずです。

OracleDBへの接続設定を作成

Oracle Developer Tools for VS Codeのインストールによって、OracleDBへの接続ができるようになります。早速、接続設定を行い、繋げてみましょう。

まずはデータベースのアイコンをクリックしOracle Explorerを表示、DATABASEの+(プラス)ボタンをクリックします。

「Create New Connection」…つまり、新規接続を作成する画面が表示されます。OracleDBへの接続方法は様々なやり方がありますが、まずは基本である「Basic」でのやり方でやってみます。Basicの場合、必要になる設定は

  • DB名(ホスト名、IPアドレス)
  • ポート番号(Oracleのデフォルトは1521)
  • サービス名
  • ユーザー名(スキーマ名)
  • パスワード
  • 接続名…上記設定を行うと「ユーザー名.サービス名」で設定されるが、変更したい場合は修正

になります。設定が終わったら「Create Connection」で接続設定が作成されます。エラーになった場合は、OracleDBの設定と誤りがないか確認しましょう。

要注意:settings.json でエラーがあると登録できない

私がハマったこととして、OracleDBとの設定が合っているのに接続設定が保存できない、という現象がありました。保存できない原因は「settings.json」にエラーがある状態が原因のようです。

このように、既存のsettings.jsonに追記する形で接続設定が保存されるため、エラーがある状態だとできないみたいなんですね。設定画面から設定変更を行った場合は発生しないと思いますが、settings.jsonを直接修正した場合は要注意となります。

Oracle Developer Tools for VS Code で、できること

OracleDBとの接続ができれば、OracleDBに対して以下の内容ができるようになります。

  • テーブル、ビューの参照
  • SQLクエリの実行(DMLおよびDDL)
  • ストアドプログラム(PL/SQL)の編集および実行

順に確認していきましょう。

テーブルデータの参照

OracleDB接続後に、Tables→Relatuinal Tablesと展開すると対象スキーマに構築されているテーブルが一覧表示されます。参照したいテーブルを右クリックし、「Show Data…」を選択することで、

先頭500件のデータが表示されるようになります。

表示されたデータについては、CSVまたはJSON形式で保存することができます。簡易的にデータを確認するレベルでは十分通用すると思います。

クエリの実行(DDLおよびDML)

SQLクエリを実行することも可能です。新規にSQLクエリを作成する場合ですが、まずは Ctrl + N で Visual Studio Codeの新規画面を開きます。続いて、Ctrl + K を押下し続いて M を押下することで、ファイル種別を設定することができます。候補を絞るために「sql」と入力、ファイル種別を Oracle-SQL and PLSQL を選択することで、エディタの支援機能+クエリの実行ができるようになります。

まずは、テーブル作成のDDLを実行してみます。

-- テーブル作成
CREATE TABLE VSCODE_TEST 
 (
 TEST01 VARCHAR2(10) NOT NULL,
 TEST02 VARCHAR2(50)
 ) 
/

「TABLE created」と表示されていますので、無事に新規テーブルが作成できたようです。

続いて、作成したテーブルにデータを作成していきます。INSERT文(DML)の実行ですね。

-- テーブルデータ作成
INSERT INTO VSCODE_TEST (TEST01, TEST02) VALUES ('TEST000001', 'あいうえお')
/
INSERT INTO VSCODE_TEST (TEST01, TEST02) VALUES ('TEST000002', 'かきくけこ')
/
INSERT INTO VSCODE_TEST (TEST01, TEST02) VALUES ('TEST000003', 'さしすせそ')
/
INSERT INTO VSCODE_TEST (TEST01, TEST02) VALUES ('TEST000004', 'たちつてと')
/
INSERT INTO VSCODE_TEST (TEST01, TEST02) VALUES ('TEST000005', 'なにぬねの')
/

「1 row created」「Commit complete」という表示がありますので、こちらも問題なく行追加ができているようです。

最後に、SELECT文で作成したデータが表示されるか確認してみます。

-- テーブルデータ参照
SELECT * FROM KANEGO.VSCODE_TEST
/

テーブル参照時と同様の画面で結果が表示されました。
SELECT結果については、テーブル参照と同様に外部ファイルへの保存が可能です。

以上のことから、DBアクセスのいわゆる「CRUD」については普通にできるようです。

本題 PL/SQLの編集方法

前置きが長くなりましたが、ストアドプログラム(PL/SQL)の作成、編集、実行までを行ってみます。

まずは、Create文で作成

OracleDBに接続した状態で、新規のOracle-SQL and PLSQL作成画面を用意します。ここで、「CREATE OR REPLACE PROCEDURE …」の構文でストアドプログラムを新規に作り、実行してみます。
下記ストアドプログラムはエラーがありますがわざと実行してみます。

CREATE OR REPLACE PROCEDURE TEST_0001(p_TEST01 IN VARCHAR2
                                    , p_TEST02 OUT VARCHAR2
                                    , ReturnCode OUT NUMBER
                                    , ErrorBuffer OUT VARCHAR2)
IS

	-- 変数部
	w_Result VARCHAR2(50)  -- セミコロンがない(エラー)

BEGIN

	-- 初期化
	w_Result	:= NULL;
	
	-- データ抽出
	SELECT TEST02 INTO w_Result FROM VSCODE_TEST WHERE TEST01 = p_TEST01 -- セミコロンがない(エラー)
	
	p_TEST02 := w_Result -- セミコロンがない(エラー)

EXCEPTION
	WHEN OTHERS THEN
		ReturnCode	:=	SQLCODE;
		ErrorBuffer	:=	SQLERRM;
		ROLLBACK;
END;
/

エラーがある場合でもストアドプログラムは作成されているようです、その場合は、Proceduresの中に作成したストアドプログラムがあるはずです。(ファンクション、パッケージの場合はそちらに作成されているはず。)
Procedures → 作成したストアドプログラム を右クリックし「Edit…」を選択すると、OracleDBに登録されているストアドプログラムが表示されるようになります。

画面右側のマップに該当行が赤色で表示されているで内容を確認しましょう。エラー内容もエラー箇所にマウスオーバーすることでOracleのエラーが表示されるようになっています。
エラー表示されていない場合は、一度 Ctrl + Dを押下してください。

以外と支援機能が役立つ

ちなみにストアドの編集画面ですが、SQL文作成時と同様に、コード作成支援が動くので単なるテキストエディタで編集を行うよりは効率はよいです。

Save to Database または Ctrl + D でDB反映(エラーがある場合は不可)

ソースの編集をした後に、右クリックして「Save to Database」を選択するか、Ctrl + Dを押下することでOracleDBへの修正反映が行われます。エラーがある場合はエラー表示されます。(新規作成時と同様です)

エラーを解消し無事に作成できれば、「Saving changes from OracleExplorer…と画面右下にポップアップ表示されます」

Run または Ctrl + E でPL/SQLの実行が可能(ステップ実行は無理?)

そして、ストアドプログラムの実行確認も行うことができます。右クリックして「Run」を選択するか、Ctrl + Eを押下することで、ストアドプログラムの実行画面が表示されます。

起動引数が必要な場合は、引数を設定後「OK」をクリックすることで、ストアドプログラムが実行されます。

ストアドのアウトプットが結果として表示されます。

デバッグ実行(ブレークポイントを設定する、ステップ実行をする)機能については、残念ながら存在しないようです。
大きなストアドプログラムの実装には向かないのが正直なところでしょうか。

まとめ

以上のことから、Visual Studio Code でも、OracleDBへの接続、データ参照、DDL、DMLの実行、ストアドプログラムの実行まで行えることができます。ストアドプログラムについてはステップ実行などのデバッグ機能はまだない模様ですが、簡単な実行確認についてはVSCodeで完結するので便利です。

PL/SQLの本格的な開発やデバッグでは、SI Object Browser や Oracle純正の SQL Developer などがありますが、ライセンスの問題や使いやすさの問題から一長一短な面があるのがストアド開発の正直な所だと思います。様々な開発手段を補完する意味でも、Visual Studio Code での OracleDB関連の開発は簡易な機能ながらも一つの手にはなる印象です。

コメント