(57)【特許請求の範囲】
【請求項１】
第１のDBMSと、該第１のDBMSと異種の第２のDBMSと、
前記第１及び第２のDBMSをコンピュータにアクセスさせるためのユーザ実行プログラムと、
該ユーザ実行プログラムをコンピュータに実行させるために必要な実行環境とを備え、
前記ユーザ実行プログラムは、ユーザが定義したソースプログラムをコンパイルすることで生成され、
前記実行環境は、
第１のDBMS用固有処理（データベースアクセス）ライブラリと、
第２のDBMS用固有処理（データベースアクセス）ライブラリと、
前記ユーザ実行プログラムがコンピュータにデータベースアクセス要求をさせることにより使用する前記第１又は第２のDBMS用固有処理（データベースアクセス）ライブラリをコンピュータに切り分けさせるためのデータベースアクセス共通ライブラリとを備え、
該データベースアクセス共通ライブラリは、
データベースアクセス共通処理部と、複数のSQL情報テーブルと、SQL情報取得部とを備え、
前記データベースアクセス共通処理部は、最後に実行されたSQL文およびホスト変数値の情報を記憶するカレントテーブルを備え、
前記ソースプログラムは、ホスト変数を保持する２種類のSQL文を用いコンピュータにDBMSをアクセスさせ、
前記データベースアクセス共通ライブラリは、前記ユーザ実行プログラムにおいて、SQL文の実行時、および、SQL文に対するホスト変数の割り当て時のそれぞれにおいて、コンピュータにSQL文およびホスト変数値の情報を前記SQL情報テーブルの対応する領域に保持させ、
前記ユーザ実行プログラムにおいて、SQL実行エラーが発生した場合、前記ユーザ実行プログラムのエラー処理部はコンピュータに前記SQL情報取得部を呼び出させ、前記ユーザ実行プログラムにおいてエラーが発生した時点の前記カレントテーブル、又は、ユーザが指定するSQL文及びホスト変数値の情報を前記SQL情報テーブルから取得させ、前記ユーザ実行プログラムに返却させる、異種データベースシステムSQLデバッグシステム。
【請求項２】
前記ソースプログラムは、ホスト変数を保持する２種類のSQL文を用いるSQL登録関数とSQL実行関数と、ホスト変数を保持し前記エラー処理部で使用されるSQLエラー情報取得関数とを有する、請求項１に記載の異種データベースシステムSQLデバッグシステム。
【請求項３】
請求項１又は請求項２に記載の異種データベースシステムSQLデバッグシステムを用いた異種データベースシステムSQLデバッグ方法であって、
ユーザ実行プログラムが動作させるコンピュータからDBMSに対するSQL文登録要求を受ける第１のステップと、
登録要求されるSQL文にホスト変数が存在するかを判断する第２のステップと、
該第２のステップにて、登録要求される前記SQL文にホスト変数が存在する場合に、SQL情報テーブルを確保し、前記SQL文の記憶およびホスト変数値の初期化の準備を行い第４のステップへ進む第３のステップと、
該第２のステップにて、登録要求される前記SQL文にホスト変数が存在しない場合に、
登録要求される前記SQL文に対するホスト変数の割り当てが実行された場合、前記SQL文及びホスト変数値をSQL情報テーブルに設定する第４のステップと、
登録されたSQL文を実行し、対応するSQL文に対するホスト変数値を前記SQL情報テーブルに設定する第５のステップと、
前記ユーザ実行プログラムにおいて、SQL実行エラーが発生した際、前記ユーザ実行プログラムはコンピュータにSQL情報取得部を呼び出させる第６のステップと、
前記ユーザ実行プログラムはコンピュータに、前記SQL情報テーブルで保持しているSQL実行エラーが発生した時点のカレントテーブル又はユーザが指定するSQL文のホスト変数値をSQL文中のホスト変数値と置き換えさせ、該SQL文及びホスト変数値の情報を前記ユーザ実行プログラムに返却させる第７のステップとを有する、異種データベースシステムSQLデバッグ方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
異種データベースシステムSQL（構造化問い合わせ言語）デバッグ方法及びそのシステムに関する。
【０００２】
【従来の技術】
データベースにアクセスするプログラムを作成する場合、複数のSQL文を実行することが多く、SQL実行時にエラーが発生した際、そのデバッグのための情報をユーザが管理する必要があった。
【０００３】
【発明が解決しようとする課題】
上述の従来の技術においては、既に完成しているアプリケーションプログラムの修正・変更を行う場合は、ローカル変数をグローバル変数に変更するなど、広範囲に、また、細心の注意を必要とする変更となり、非常に工数の掛かる作業となっていた。また、対象となるDBMS（データベース管理システム）によっては、直前に実行したSQL文を取得できるインターフェイスを持つものもあるが、これで取得できるものはSQL文そのものであり、その実行時にホスト変数として割り当てられていた値まで取得できるものはなかった。さらに、対象となるDBMSにより、インターフェイスが異なり、それを意識したプログラミングをする必要があり、移植性が損なわれるなどの問題があった。
【０００４】
そこで、提供する実行・開発環境において、各DBMSの差異を吸収し、ユーザがSQLデバッグのため必要となる情報を保持・返却する機能を持てば、ユーザ実行プログラムの作成や修正の際、デバッグのために最小限の設計を行えばよく、また、DBMSを意識しないコーディングとなるため、大幅な工数削減が可能となる。
【０００５】
本発明の目的は、異種データベースシステムで発生したSQL実行時エラーのデバッグを容易にする異種データベースシステムSQLデバッグ方法及びそのシステムを提供することにある。
【０００６】
【課題を解決するための手段】
本発明の異種データベースシステムSQLデバッグシステムは、
第１のDBMSと、第１のDBMSと異種の第２のDBMSと、第１及び第２のDBMSをアクセスするユーザ実行プログラムと、ユーザ実行プログラムを実行するために必要な実行環境とを備え、ユーザ実行プログラムは、ユーザが定義したソースプログラムをコンパイルすることで生成され、実行環境は、第１のDBMS用固有処理（データベースアクセス）ライブラリと、第２のDBMS用固有処理（データベースアクセス）ライブラリと、ユーザ実行プログラムからのデータベースアクセス要求により使用する第１又は第２のDBMS用固有処理（データベースアクセス）ライブラリを切り分けるデータベースアクセス共通ライブラリとを備え、データベースアクセス共通ライブラリは、データベースアクセス共通処理部と、複数のSQL情報テーブルと、SQL情報取得部とを備え、データベースアクセス共通処理部は、最後に実行されたSQL文およびホスト変数値の情報を記憶するカレントテーブルを備え、ソースプログラムは、ホスト変数を保持する２種類のSQL文を用いDBMSにアクセスし、データベースアクセス共通ライブラリは、ユーザ実行プログラムにおいて、SQL文の実行時、および、SQL文に対するホスト変数の割り当て時のそれぞれにおいて、SQL文およびホスト変数値の情報をSQL情報テーブルの対応する領域に保持し、ユーザ実行プログラムにおいて、SQL実行エラーが発生した場合、ユーザ実行プログラムのエラー処理部からSQL情報取得部が呼び出され、ユーザ実行プログラムにおいてエラーが発生した時点のカレントテーブル、又は、ユーザが指定するSQL登録情報に対応するSQL文及びホスト変数値の情報をSQL情報テーブルから取得し、ユーザ実行プログラムに返却する。
【０００７】
また、ソースプログラムは、ホスト変数を保持するSQL文を用いるSQL登録関数とSQL実行関数とSQLエラー情報取得関数とを有してもよい。
【０００８】
本発明の異種データベースシステムSQLデバッグシステムは、
上述の異種データベースシステムSQLデバッグシステムを用いた異種データベースシステムSQLデバッグ方法であって、ユーザ実行プログラムからDBMSに対するSQL文登録要求を受ける第１のステップと、登録要求されるSQL文にホスト変数が存在するかを判断する第２のステップと、第２のステップにて、登録要求されるSQL文にホスト変数が存在する場合に、SQL情報テーブルを確保し、SQL文の記憶およびホスト変数値の初期化の準備を行い第４のステップへ進む第３のステップと、第２のステップにて、登録要求されるSQL文にホスト変数が存在しない場合に、登録要求されるSQL文に対するホスト変数の割り当てが実行された場合、SQL文及びホスト変数値をSQL情報テーブルに設定する第４のステップと、登録されたSQL文を実行し、対応するSQL文に対するホスト変数値をSQL情報テーブルに設定する第５のステップと、ユーザ実行プログラムにおいて、SQL実行エラーが発生した際、ユーザ実行プログラムからSQL情報取得部を呼び出す第６のステップと、SQL情報テーブルで保持しているSQL実行エラーが発生した時点のカレントテーブル又はユーザが指定するSQL登録情報に対応するSQL文のホスト変数値をSQL文中のホスト変数値と置き換え、SQL文及びホスト変数値の情報をユーザに返却する第７のステップとを有する。
【０００９】
従って、本発明は、ユーザの記述したソースプログラムにおいて、ユーザに煩雑なデバッグを目的としたコードを記述させることなく、共通のインターフェイスを用いて異種データベースシステムで発生したSQL実行時エラーのデバックを容易にすることを特徴とする。
【００１０】
即ち、ユーザが対象DBMSを意識することなく、SQL実行エラーのデバッグを行うことができる。また、本来、登録したSQL情報は、プログラムを作成するユーザ自身が意識して管理すべき情報であるが、本発明により、既に作成されているユーザ実行プログラムに大きな変更を加えることなくSQL実行エラーのデバッグを行うことができる。これにより、ユーザがSQL実行エラーのデバッグを行う際の工数の大幅な削減が可能となる。
【００１１】
また、ソースプログラムが、SQL登録関数、SQL実行関数、および、SQLエラー情報取得関数持つ場合、ホスト変数を保持するSQL文を用いることにより、ユーザが管理すべき変数が、ローカル変数やグローバル変数と意識することなく利用することができ、また、プログラム変更も容易であるなど、プログラムの生産性および保守性を向上させることが可能となる。
【００１２】
【発明の実施の形態】
以下図面を参照しつつ実施の形態に従って説明する。
【００１３】
（発明の第１の実施の形態）
図１は本発明の第１の実施の形態の構成を示し、本発明を２種類の異なったベンダによるDBMSに接続し、アクセスを実施する例である。図２は図１のデータベースアクセス共通処理部４およびSQL情報取得部７の処理説明図である。図１中、１２はユーザが定義したソースプログラム、１はソースプログラム１２をコンパイルすることで生成されるユーザ実行プログラム、２はユーザ実行プログラム１を実行するために必要な実行環境、３はユーザ実行プログラムからのデータベースアクセス要求により使用する各社製DBMS用固有処理（データベースアクセス）ライブラリを切り分けるデータベースアクセス共通ライブラリである。ユーザが定義したソースプログラム１２では、ホスト変数を保持する２種類のSQL文を用いDBMSにアクセスする。データベースアクセス共通ライブラリ３は、データベースアクセス共通処理部４、SQL情報テーブル６、およびSQL情報取得部７を持つ。データベースアクセス共通処理部４は、最後に実行されたSQL文およびホスト変数値の情報を記憶するカレントテーブル５を持つ。８はA社製DBMS１０に対し接続およびアクセスするためのA社製DBMS用固有処理（データベースアクセス）ライブラリ、９はB社製DBMS１１に対し接続およびアクセスするためのB社製DBMS用固有処理（データベースアクセス）ライブラリである。
【００１４】
データベースアクセス共通ライブラリ３は、ユーザ実行プログラム１において、SQL文の実行時、および、SQL文に対するホスト変数の割り当て時のそれぞれにおいて、SQL文およびホスト変数値の情報をSQL情報テーブル６の対応する領域に保持する。ユーザ実行プログラム１において、SQL実行エラーが発生した場合、ユーザ実行プログラム１のエラー処理部からSQL情報取得部７が呼び出され、ユーザ実行プログラム１においてエラーが発生した時点のカレントテーブル５、または、ユーザが指定するSQL登録情報に対応するSQL文およびホスト変数値の情報をSQL情報テーブル６から取得し、ユーザ実行プログラム１に返却する。データベースアクセス共通ライブラリ３の内部に、SQL情報テーブル６、およびSQL情報取得部７を持つことにより、各社製DBMS１０および１１や、各社製DBMS用固有処理ライブラリ８および９の持つ機能を意識することなく、SQL情報を提供することが可能となる。
【００１５】
次に図２を用いてデータベースアクセス共通ライブラリ３を中心とした本実施の形態の動作を示す。まず、処理４０はユーザ実行プログラム１からDBMSに対するSQL文登録要求を受け、処理４１にて、登録要求されるSQL文にホスト変数が存在するかを判断する。処理４２は、処理４１にて登録要求されるSQL文にホスト変数が存在した場合に、SQL情報テーブル６を確保し、SQL文の記憶およびホスト変数値の初期化等の準備を行う。処理４３は、登録要求されるSQL文に対するホスト変数の割り当てが実行された場合、そのSQL文及びホスト変数値をSQL情報テーブル６に設定する。処理４４は、登録されたSQL文の実行であるが、このタイミングでも、対応するSQL文に対するホスト変数値をSQL情報テーブル６に設定する。処理５１は、ユーザ実行プログラム１において、SQL実行エラーが発生した際、ユーザ実行プログラム１からSQL情報取得部７が呼び出される処理である。処理５２は、SQL情報テーブル６で保持しているSQL実行エラーが発生した時点のカレントテーブル５またはユーザの指定したSQL登録情報に対応したSQL文のホスト変数値をSQL文中のホスト変数'?'と置き換え、そのSQL文及びホスト変数値の情報をユーザに返却する。
【００１６】
（発明の第２の実施の形態）
次に本発明の第２の実施の形態について図３を参照すると、本実施の形態はユーザ実行プログラム６１において、ソースプログラム７２が、SQL登録関数８１、SQL実行関数８２、および、SQLエラー情報取得関数８３を持つ場合の例である。SQL登録関数８１、SQL実行関数８２、および、SQLエラー情報取得関数８３はそれぞれローカル変数を持っている。通常のプログラミング言語においては、関数間において、互いのローカル変数を参照することはできず、ユーザがSQL情報を管理する場合、これらグローバルな変数として管理しなければならない。これはユーザのアプリケーション設計の段階から考慮する必要があるなど、著しく生産性を低下させることになる。本実施の形態は、このようなケースでも、SQL登録関数８１とSQL実行関数８２とSQLエラー情報取得関数８３とがホスト変数を保持するSQL文を用いることにより、ユーザが管理すべき変数が、ローカル変数やグローバル変数と意識することなく利用することができ、また、プログラム変更も容易であるなど、プログラムの生産性および保守性を向上させることが可能となる。
【００１７】
【発明の効果】
以上説明したように本発明によれば、ユーザが対象DBMSを意識することなく、SQL実行エラーのデバッグを行うことができるという効果がある。また、本来、登録したSQL情報は、プログラムを作成するユーザ自身が意識して管理すべき情報であるが、本発明により、既に作成されているユーザ実行プログラムに大きな変更を加えることなくSQL実行エラーのデバッグを行うことができるという効果がある。これにより、ユーザがSQL実行エラーのデバッグを行う際の工数の大幅な削減が可能となるという効果がある。
【００１８】
また、ソースプログラムが、SQL登録関数、SQL実行関数、および、SQLエラー情報取得関数を持つ場合、ホスト変数を保持するSQL文を用いることにより、ユーザが管理すべき変数が、ローカル変数やグローバル変数と意識することなく利用することができ、また、プログラム変更も容易であるなど、プログラムの生産性および保守性を向上させることが可能となるという効果がある。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態の構成を示す図である。
【図２】本発明の第１の実施の形態の動作を示す図である。
【図３】本発明の第２の実施の形態の構成を示す図である。
【符号の説明】
１、６１    ユーザ実行プログラム
２、６２    実行環境
３、６３    データベースアクセス共通ライブラリ
４、６４    データベースアクセス共通処理部
５、６５    カレントテーブル
６、６６    SQL情報テーブル
７、６７    SQL情報取得部
８、６８    A社製DBMS用固有処理（データベースアクセス）ライブラリ
９、６９    B社製DBMS用固有処理（データベースアクセス）ライブラリ
１０、７０    A社製DBMS
１１、７１    B社製DBMS
１２、７２    ソースプログラム
【図１】
0003695528.tif 000002
【図２】
0003695528.tif 000003
【図３】
0003695528.tif 000004