我々はC#のコードで列挙型があります。これらの値はまた、データベースフィールドに保存されている、と我々はまた、処理TSQLのたくさん(主に保存されprocsの、だけでなく、いくつかのバッチとSSISを)持っている私のSQLスクリプト/ procs全体にマジックナンバーをハードコーディングせずにTSQLでenumを使用するにはどうすればよいですか?
public enum JobStatus
{
Ready = 0,
Running = 1,
Cancelling = 2,
}
をデータ:
SELECT TOP 1 @JobSID = JobSID
FROM Job
WHERE Status = 0 /* JobStatus.Ready */
ORDER BY SubmitDate ASC
CREATE TABLE ImportCrossEffect(
/* lots deleted */
Source tinyint
DEFAULT 1 NOT NULL -- 0: Unknown (default), 1:Imported, 2:Keyed
)
私はハードTSQLの「マジックナンバーを」コーディング避けるにはどうすればよいですか?
C#およびTSQL側で列挙が一致しないというリスクをどのようにして除外しますか?
は、(Iソリューションを希望のように私は、C#のタグが含まれていることC#とTSQLの両側に列挙型の「単一ソース」の定義)
更新:
データベース内に列挙型の名前を持つテーブルがないため、値はちょうど小さなint列に格納されます。
SQLプリプロセッサのように、すべての列挙型を「マジックバリュー」に拡張することを望んでいました。
@OMGポニーは、ビューは、ビルドのscripsによって生成することができ、常に、データベース内のビューを更新することは容易であるとして、私は、ビューを使用しての理想のように行います。 –