Así que aquí está el trato. En nuestra base de datos, envolvemos la mayoría de nuestras lecturas (es decir, seleccionamos declaraciones) en funciones con valores de tabla para propósitos de seguridad y modularidad. Así que tengo un TVF que define uno o más parámetros opcionales.Cómo pasar la palabra clave predeterminada para la función de tabla llamada en ADO.NET
Creo que tener un TVF con los parámetros de default exige el uso de la palabra clave default
al llamar a la TVF así:
select * from fn_SampleTVF(123, DEFAULT, DEFAULT)
Eso está bien, todo funciona en el analizador de consultas, pero cuando llega el momento de realidad realizar esta solicitud desde ADO.NET, no estoy seguro de cómo crear un parámetro sql que realmente coloque la palabra default
en el sql representado.
tengo algo más o menos así ahora:
String qry = "select * from fn_SampleTVF(@requiredParam, @optionalParam)";
DbCommand command = this.CreateStoreCommand(qry, CommandType.Text);
SqlParameter someRequiredParam = new SqlParameter("@requiredParam", SqlDbType.Int);
someRequiredParam.Value = 123;
command.Parameters.Add(someRequiredParam);
SqlParameter optionalParam = new SqlParameter("@optionalParam", SqlDbType.Int);
optionalParam.Value = >>>> WTF? <<<<
command.Parameters.Add(optionalParam);
Así que, ¿Alguien tiene alguna idea de cómo pasar a la default
TVF?
La mejor solución que he visto hasta ahora, es evitar el uso de las cláusulas de incumplimiento en la definición de los parámetros de TVF, pasar nulos como Kevin sugirió, y crear manualmente los valores predeterminados en su cuerpo TVF. Aquí hay un artículo que encontré (se trata de Sprocs, pero el problema es el mismo). http://social.msdn.microsoft.com/Forums/en/sqldataaccess/thread/3825fe1c-7b7e-4642-826b-ea024804f807 Como con todas las otras cosas asociadas con Microsoft, hacer que esto funcione supondrá la mitad -la solución alternativa. – Mason