2016-05-02 12 views
0

これは何らかの形で可能であるべきだと思います。SQLスクリプト - IF mysql ELSEIF sqlserver

sqlスクリプトがmysqlサーバまたはsqlserverで実行されているかどうかを確認する必要があります。その理由は、列タイプを変更するための2つの異なる構文です。

このような何か:

if mysql 
    ALTER TABLE table MODIFY COLUMN column_name LONG_TEXT 
elseif sqlserver 
    ALTER TABLE table ALTER COLUMN column_name NVARCHAR(MAX) 

それはMySQLやSQLServerのであれば、どのようにチェックしますか?

+0

'ntext'は廃止されました。代わりに' NVARCHAR(MAX) 'を使用してください – lad2025

+2

各SQL方言は他人に関する知識がなく、ランダムな' .sql'ファイルをスマートにする方法はありません。アプリケーション層でこれを行う必要があります。 – tadman

+0

条件付きビルドを使用し、ターゲットに依存して、特定のコードを実行できます。 Cのプリプロセッサディレクティブのようなもの: '#ifdef MySQL #else#endif' – lad2025

答えて

0

同じスクリプトは、MySQLとSQL Serverでは動作しません。このロジックをアプリケーション層やシェル/ powershellスクリプト上で動かすことをお勧めします。

1

MySqlにはELSEIF、T-SQLにはELSE IF、PLSQLにはELSIFがあります。このアプローチはうまくいきません。

さらに、SQLは通常、実行前にシンタックスチェックされ、バッチファイルのように行単位ではありません。