stored read from ejecutar c# sql sql-server stored-procedures

read - sql c# stored procedure return value



Cómo pasar una variable nula a un procedimiento almacenado de SQL desde el código C#.net (8)

¡prueba esto! sintaxis menos líneas y aún más compacto! ¡no olvide agregar las propiedades que desea agregar con este enfoque!

cmd.Parameters.Add(new SqlParameter{SqlValue=(object)username??DBNull.Value,ParameterName="user" } );

Estoy llamando a un procedimiento almacenado de SQL desde un código de C # .net:

SqlHelper.ExecuteDataset(sqlConnection, CommandType.StoredProcedure, STORED_PROC_NAME, sqlParameters);

donde la variable sqlParameters se define como:

SqlParameter[] sqlParameters = new SqlParameter[SQL_NUMBER_PARAMETERS]; Log.Logger.Debug(string.Format("Running proc: {0} ", STORED_PROC_NAME)); SqlParameters[0] = new SqlParameter("fieldID", SqlDbType.BigInt ); SqlParameters[0].Value = fieldID; SqlParameters[0].Direction = ParameterDirection.Input;

Necesito ahora pasar otros dos parámetros a este Stored Proc, (ambos son de tipo SqlDateTime ), que van a NULL en este caso.

Gracias,

EN


Digamos que el nombre del parámetro es "Id" en su procedimiento SQL almacenado, y la función C # que está utilizando para llamar al procedimiento almacenado de la base de datos es el nombre de tipo int? . Dado que, el siguiente podría resolver su problema:

public void storedProcedureName(Nullable<int> id, string name) { var idParameter = id.HasValue ? new SqlParameter("Id", id) : new SqlParameter { ParameterName = "Id", SqlDbType = SqlDbType.Int, Value = DBNull.Value }; // to be continued...


Pregunta anterior, pero aquí hay una forma bastante clara de crear un parámetro que admite nulos:

new SqlParameter("@note", (object) request.Body ?? DBNull.Value);

Si request.Body tiene un valor, entonces se usa su valor. Si es nulo, entonces se usa DbNull.Value.


Puede pasar DBNull.Value en la propiedad .Value del parámetro:

SqlParameters[0] = new SqlParameter("LedgerID", SqlDbType.BigInt ); SqlParameters[0].Value = DBNull.Value;

Simplemente ajuste sus dos parámetros DateTime, obviamente, simplemente mostrando cómo usar el valor de la propiedad DBNull.Value aquí.

Bagazo


Use DBNull.Value Mejor aún, haga que los parámetros de su procedimiento almacenado tengan un valor predeterminado de NULL. O use un Nullable<DateTime> si el parámetro a veces será un objeto DateTime válido


Yo uso un método para convertir a DBNull si es nulo

// Converts to DBNull, if Null public static object ToDBNull(object value) { if (null != value) return value; return DBNull.Value; }

Entonces, al configurar el parámetro, solo llame a la función

sqlComm.Parameters.Add(new SqlParameter("@NoteNo", LibraryHelper.ToDBNull(NoteNo)));

Esto asegurará los nulos, se cambiará a DBNull.Value, de lo contrario, seguirá siendo el mismo.


SQLParam = cmd.Parameters.Add("@RetailerID", SqlDbType.Int, 4) If p_RetailerID.Length = 0 Or p_RetailerID = "0" Then SQLParam.Value = DBNull.Value Else SQLParam.Value = p_RetailerID End If


SqlParameters[1] = new SqlParameter("Date1", SqlDbType.SqlDateTime); SqlParameters[1].Value = DBNull.Value; SqlParameters[1].Direction = ParameterDirection.Input;

... luego copia para el segundo.