Estoy escribiendo un procedimiento almacenado C# que se implementa en SQL Server 2008 R2 (por lo que .Net 3.5) y desea declarar un opcional parámetro como guid anulable. Esto es lo que he intentado en primer lugar:Cómo declarar un guid con nulos como un parámetro opcional para un procedimiento almacenado C# CLR con SQL Server
Esta fallado con el error de tiempo de compilación:
Default parameter value for 'sID' must be a compile-time constant
que es porque DBNull.Value
no es una constante, que es un dolor.
así que he intentado cambiar la declaración de:
[Microsoft.SqlServer.Server.SqlProcedure]
public static void spCalcPerc(
SqlGuid pID
, Guid? sID = null
)
Esto compila pero ahora me sale este error de implementación:
Deploy error : Could not create a type for parameter System.Nullable
Tratando:
, SqlGuid sID = null
da este error en tiempo de compilación :
A value of type '< null >' cannot be used as a default parameter because there are no standard conversions to type 'System.Data.SqlTypes.SqlGuid'
Así sentirse bien pegado recurrí a esto:
, SqlGuid sID = "00000000-0000-0000-0000-000000000000"
que yo no quiero hacer como prueba de esa cadena en el código se siente como un kludge. Sin embargo eso no funciona ya sea como me sale este error de compilación:
A value of type 'string' cannot be used as a default parameter because there are no standard conversions to type 'System.Guid'
Gah, 4 enfoques diferentes y ninguno de ellos trabajan. suspiro
Agradeceríamos sus ideas o un empujón en la dirección correcta, por favor.
¿Has probado "Guid? SID", sin = null? – H27studio