- PR -

How do I write a DEBUGGER for SQL(Oracle,SQLServer...)

投稿者投稿内容
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-06-02 02:18
各種DBサーバ向けのSQLをデバッグする機能を有するアプリケーションを
作りたいですが、、、、
(デバッグ:ブレークポイントを張ったり、ステップ実行したりすることを指してます)
やり方は見当もつきません

普通のよくあるPEファイルをデバッグするやつとやり方全く違う気がします。
と言ってもそう思う根拠はありません。

どなたか、わかる方、どんな小さいことでも結構ですので
ヒント頂けないでしょうか?DBサーバ種類限定でも結構です。


_________________
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-02 09:21
 PL/SQL Developerみたいなもの?
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-06-02 09:28
CHNさんてクリエイティブな方ですね。

面白い試みだなと思いました。私は、その手の学術を学んでおりませんが、

やはり、SQLは単なる文字列で現される為、文字列を分解/解析する手段を
考えるのが第1歩かな?と思いました。その為には、「オートマトンについて」
にてjittaさんが探されたサイトの情報が手始めとして宜しいかと思います。
「言語理論」ってやつそうですね。

その後は、文字列を意味になす訳ですが、この意味をどの様に内部管理するかが
肝かな〜?と想像しています。
SQL文であれば
 1.構成文(Select , from , Where 等)
 2.関数
 3.オブジェクト
に別けるかな〜?と考えています。

2.関数は、システム関数とユーザ関数の両方を取扱い
3.オブジェクトは、階層構造(子から親を求める事も必要。)や別名定義等の
  概念を取り扱うので大変そうですね。

oracleの場合、オブジェクト情報はシステムライブラリより取得が出来ます。

ただ、SQL文自体は、副問合せ以外にフローが無いので
ステップ実行やブレイクは無理と思うのですが... PL/SQL等の事ですか?
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2004-06-02 09:51
もう、ちょっと突っ込んで考えたら、「関数」も「オブジェクト」も
一緒でした、大歩危です。

後、条件式自体もSQL文の解析と同様に分解/解析処理する必要がある為、
突っ込み過ぎるとDBの内部処理まで話が膨らみ、相当大変と思います。
逆に薄く作成すると、構文チェックツールで終わるので、
作成意味をなさない事になります...

うんんん、言語を開発している人達は、やっぱ化物なんですね。
改めて思った。
きくちゃん
ぬし
会議室デビュー日: 2003/08/01
投稿数: 854
お住まい・勤務地: 都内某所
投稿日時: 2004-06-02 09:56
CHNさん、お早うございます。

Oracle の場合は DBMS_DEBUG とか DBMS_OUTPUT とかのパッケージを使用するんじゃないでしょうか。←詳細はマニュアル(パッケージ・プロシージャリファレンス)を参照して下さい。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-06-02 10:05
引用:

はにまるさんの書き込み (2004-06-02 09:28) より:

やはり、SQLは単なる文字列で現される為、文字列を分解/解析する手段を
考えるのが第1歩かな?と思いました。


 UNIXでは、レキシカルアナライザ(参考図書)を使います。sedの様に場合分けをしていって、コマンドを通すと、Cのスケルトンプログラムができます。
#15年前の記憶
CHN
ぬし
会議室デビュー日: 2002/03/07
投稿数: 382
投稿日時: 2004-06-02 10:10
こんにちは。

> PL/SQL Developerみたいなもの?

そうです。これは何度もみてますが、研究材料なしです。。

> うんんん、言語を開発している人達は、やっぱ化物なんですね。
> 改めて思った。

私もそう思います。でもなかなか面白いです。
SQLの構文分析も必要ですが、それだけでは実現できませんので、、、

> Oracle の場合は DBMS_DEBUG とか DBMS_OUTPUT とかのパッケージを使用するんじゃないでしょうか。←詳細はマニュアル(パッケージ・プロシージャリファレンス)を参照して下さい。

情報ありがとうございます。
もしかしてこれ
研究してみます。


_________________
世界平和を願う!
http://park8.wakwak.com/~chin/

[ メッセージ編集済み 編集者: CHN 編集日時 2004-06-02 10:12 ]
たーぞう
ぬし
会議室デビュー日: 2003/08/08
投稿数: 317
お住まい・勤務地: お花畑
投稿日時: 2004-06-02 10:26
引用:

CHNさんの書き込み (2004-06-02 10:10) より:
私もそう思います。でもなかなか面白いです。
SQLの構文分析も必要ですが、それだけでは実現できませんので、、、


通常の手続き型言語なら、構文規則さえ決めてしまえば、あとはYACCを利用することにより構文解析プログラムを作成することができます。
SQLに関しても、ある程度流用はできると思いますが・・・やってみてください(笑)。

構文規則については、各DBMSのマニュアルに構文図が記載されていると思いますが、もしなければリファレンスを元に構文図を作成されることをお勧めします。

[ メッセージ編集済み 編集者: たーぞう 編集日時 2004-06-02 10:27 ]

スキルアップ/キャリアアップ(JOB@IT)