プロが教える店舗&オフィスのセキュリティ対策術

SQL文内に"sysdate"を記述してしまうとOracleでは動作しますが、
SQLsercerではエラーになると思います。そこで「拡張SQL」を
使用すればOracleでもSQLserverでも動作するようになると
聞いたのですが記述方法がわかりません。
どなたかご教授いただけませんでしょうか?

宜しくお願いいたします。

A 回答 (2件)

拡張SQLとは、レコードの抽出や追加、更新などだけではなくて、複合文を使って、他の言語のように変数や条件文などを記述する方法です。



たとえば
BEGIN
DECLARE 変数名 型 ;
IF データベースがOracleか THEN
OracleでのSQL文で宣言した変数に値をセット ;
Else IF データベースがSQLserverか THEN
SQLserverでのSQL文で宣言した変数に値をセット
END IF
END
のような感じで一連のSQL文を書くことができるということではないでしょうか?
(この例は、SQL Anywhereでの例です。)

ひょっとしたら自分の認識が違うかもしれません。・・・
どなたか補足まってま~す。m(__)m
    • good
    • 0
この回答へのお礼

アドバイスありがとうございました。
通常拡張SQLと言えばShadowMoonさんのおっしゃるとおりの内容ですよね。

私の質問もかなり足りない部分があったので非常に申し訳ない気持ちです。
一応今回私が悩んでいた部分が一応解決しましたのでご紹介いたします。
実はJavaのアプリケーションで質問の内容を解決しようとしておりました。
(ここからJavaの話になってしまうのですが・・・)
Sunが提供しているJavaDocにJDBCについての記述がありその中で"スカラー関数"
というものがあるのです。
http://java.sun.com/j2se/1.3/ja/docs/ja/guide/jd …
これを使用するとJDBC内で自動的に接続先のDBにあった関数に変換してくれるという
便利なものです。
しかし、Oracleではなんとこいつをサポートしておらず(泣)結局トリガーで代用
することになりました。
何かのご参考になればと思います。

お礼日時:2002/09/10 18:28

サーバー側から時間を取得する方法ですね


Oracleはsysdateですが
SQL Serverでは、GETDATE()で取得する事が可能です。
GETDATEでヘルプを探してみてください。

この回答への補足

早々のご回答ありがとうございます。
私の質問の仕方が悪かったため、違う意味にとらえられてしまったみたいですね。
私がやりたいことはOracleもSQLserverも両方動作する1つのSQL文を
記述したいということです。
例えば、
update table1 set col1 = sysdate
をSQLserverで実行するとエラーになるはずです。sysdateのような
DBに依存した部分を「拡張SQL」という記述方法で記述するとOracleでも
SQLserverでも正常に動くと聞きました。
ご存じでしたら記述方法をご教授下さい。

補足日時:2002/09/05 21:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!