.net: Как выполнить хранимую процедуру с параметром NULL в C #? - PullRequest
3 голосов
/ 01 июня 2010

Как выполнить хранимую процедуру с параметром NULL в C #?

EDIT

На самом деле, я написал код ниже. Как вы можете видеть, параметр status является типом значения NULL. Это правильно? или нет?

public void LoadAll(DataTable tb, int? status=null)
    {
        try
        {
            using (SqlConnection connection = new SqlConnection())
            {
                connection.ConnectionString = this.connectionString;

                using (SqlCommand command = connection.CreateCommand())
                {
                    command.CommandType = CommandType.StoredProcedure;
                    command.CommandText = "USP_OrganizationChartSelect";
                    SqlCommandBuilder.DeriveParameters(command);
                    command.Parameters["@Status"].Value = status.HasValue ? status : null;
                    if (connection.State != ConnectionState.Open)
                        connection.Open();
                    SqlDataAdapter adapter = new SqlDataAdapter(command);
                    tb.Clear();
                    adapter.Fill(tb);
                    adapter.Dispose();
                    adapter = null;
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

Спасибо

Ответы [ 3 ]

4 голосов
/ 01 июня 2010

Вы можете попробовать DBNull.Value вместо null или пропустить параметр, если значение, которое можно обнулить, не имеет значения полностью.

0 голосов
/ 01 июня 2010

Вы можете проверить значение Nullable в вашем sp, как показано ниже:

select * from table
where (code = @code or @code is null)

этим решением, если @code будет нулевым, то это условие не будет применяться.

0 голосов
/ 01 июня 2010

Если параметр имеет значение NULL, это должен быть тип значения. Предположим, у вас есть параметр int nullable, и вы можете передать его следующим образом.

  int? nullableParam = null;
  nullableParam = 10; //set the value if any
  //Pass nullableParam to your sp call.
...