

`pro*c`を用いてoracleデータベースを扱う業務アプリを開発しているのですが、pcファイルに(`/*`〜`*/`で括った形の)コメント込みで埋め込んだSQL分を記述し、プリコンパイルすると、作成されたcファイルには該当のSQL文中のコメントが無くなって記述されてしまいます。

例えばpcファイルに以下のようなSQL文を記述し、

[code]

    EXEC SQL AT :psz_dbname SELECT NAME FROM EMPLOYEE /* SQL-ID : selEmployee */;
    
[/code]

プリコンパイルし、作成されたcファイルには該当のSQLが以下のように記述されてしまいます。

[code]

    sqlstm.stmt = “SELECT NAME FROM EMPLOYEE”;
    
[/code]

この為、このpcファイルからコンパイルして作成された実行モジュールを実行して上記のSQLが発行されますと、 `v$sqltext`
テーブルには以下のように登録されます。

[code]

    SQL_TEXT
    - - - - - - - - - -
    SELECT NAME FROM EMPLOYEE;
    
[/code]

ところが、お客様としては、大量のSQLが発行されている中で目的のSQLを `v$sqltext`
から素早く検索できるように以下のような形で登録される事を望んでいます。

[code]

    SQL_TEXT
    - - - - - - - - - -
    SELECT NAME FROM EMPLOYEE /* SQL-ID : selEmployee */;
    
[/code]

この形ならselEmployeeで曖昧検索すれば、該当のSQLを一意に特定できます。

従いまして、pcファイルにコメント付きで埋め込んだSQL文がプリコンパイルによって作成されたcファイルに記述された該当のSQL文からコメント部が削除されるのをどうしても防ぎたいのですが、その方法が分かりません。

大変困っていまして、  
どなたかお分かりになられる方がいましたら、是非ともご教授頂きたく、  
何卒、よろしくお願い致します。


CC BY-SA 4.0
2020-04-09T11:53:24.483
65496
2020-04-09T17:08:05.477
2020-04-09T16:46:18.680
3060
39566
question
c sql oracle
pro*cプリコンパイルで作成されるcファイル上のSQLでコメント文が削除されるのを防ぎたい


SQLのコメントをANSI形式で記述してはいかがでしょうか。  
Cプリプロセッサはこの形式をコメントと認識しないので削除されないと考えました。  
※ 環境がないため、この方法の動作は確認できていません。

[code]

    EXEC SQL SELECT NAME FROM EMPLOYEE -- SQL-ID : selEmployee
    ;
    
[/code]


CC BY-SA 4.0
2020-04-09T17:08:05.477
65504
2020-04-09T17:08:05.477
35558
65496
answer