Tenemos enumeraciones en nuestro código C#:¿Cómo uso las enumeraciones en TSQL sin el número mágico de codificación dura en todos mis scripts/procesos de SQL?
public enum JobStatus
{
Ready = 0,
Running = 1,
Cancelling = 2,
}
Estos valores también se almacenan en campos de la base, y tenemos mucha de TSQL (procsos mayoría almacenados, así como algunos lotes y SSIS) que también procesa los datos:
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
)
¿Cómo evito dura la codificación de los “números mágicos” en el TSQL?
¿Cómo elimino el riesgo de que las enumeraciones no coincidan en los lados C# y TSQL?
(I han incluido la etiqueta C#, como me gustaría solución que “individuales de origen” las definiciones de las enumeraciones tanto en el C# y los lados TSQL)
actualizaciones:
No tenemos tablas en la base de datos con los nombres Enum, los valores solo se almacenan en pequeñas columnas int.
Tenía la esperanza de algo así como un pre-procesador SQL que "expandiría" toda la enumeración hasta allí "valor mágico".
los potros @OMG, me gusta el ideal de utilizar un punto de vista, ya que la vista podría ser generada por los scripts de construcción y siempre es fácil de actualizar vistas en una base de datos. –