2012-03-22 10 views
1

質問:単語がSybaseの予約語である(列名として使用できない)かどうかを確認する方法はありますか?

  • どのように(プログラム的に)のSybaseの予約キーワードの完全なリストを取得することができますか?

    具体的には、表内の列名にすることはできません。

  • 特定のの識別子がSybaseの予約済みキーワードであるかどうかを確認する方法はありますか?

背景:

Iは、Sybaseに一時テーブルにヘッダーと負荷とのカンマで区切られたファイルをとる工程を有しています。

目標は、一時テーブルの列名をファイルの列名と一致させることです。

ファイルに予約済みキーワードの後に​​名前が付けられた列がある場合、これは失敗します。

CREATE TABLEステートメントが失敗する前にこのシナリオをキャッチしたいと思います。

注:

  1. 私はSybaseのバージョンに依存しないソリューションを探しています。

    したがって、「Sybaseリファレンスマニュアルのすべての単語をコピーしてください(例:this for v.12.5)は有効な答えではありません。私はこれを行うことができますが、Sybase 15ではキーワードを変更しなくても動作しません手でリスト。

  2. ソリューションが存在しますが、以前のSybaseバージョンでは使用できない場合は、私はテーブルを作成することによって、私もこれを行う方法の完全承知しているのSybase 12.5と互換性が何か以降

  3. が必要私が持っている言葉では、CREATE TABLEのトラップを捕らえて、どの単語が失敗したかを読んでいます。もし可能であればもっと洗練された解決法を探しています。

答えて

1

まず、あなたのconfig(quoted_identifierをonに設定)で "quoted_identifier"をオンにします。次に、すべてのカラム名を二重引用符でエスケープします。

このように、予約語であるものをキャッチする必要はなく、すべての列には必要な名前が付けられます。

1

Google検索より多くの方法が見つかりました!

select name from master..spt_values where type="W" 
+0

このテーブルはSQL Anywhere 11にはありません。 –

+0

@ maf-soft - SQL Anywhereは、通常のSybase製品(ASEなど)とは違います。 – DVK

関連する問題