Nano Hash - криптовалюты, майнинг, программирование

Отправить нулевое значение в хранимую процедуру

Как отправить нулевое значение для параметров значений таблицы в хранимую процедуру в C #?



Ответы:


1

Используйте как это

command.Parameters.AddWithValue("@param", DBNull.Value);

Вот хорошая ссылка на ту же тему
Как передать пустую переменную в хранимую процедуру SQL из кода C # .net

Вы можете перейти по ссылке.
Использование DBNull.Value с SqlParameter без знания sqlDbType?

17.11.2012

2

Однако есть небольшая проблема с использованием DBNull.Value. Допустим, у меня есть бит в процедуре хранилища с именем IO.

в магазине процедура

   CREATE PROCEDURE [dbo].[stp_Check]
   @IO BIT

Затем в код я добавляю параметр следующим образом.

   object parameter = new SqlParameter("IO", true); //using false is the same.

И затем я вызываю процедуру магазина

   _repositary.DataContext.Database.SqlQuery<CallDetail>("exec stp_Check @IO", parameter)();

Здесь _repository - мой класс DataRepository с контекстом. Для этого достаточно знать, что он выполнит sp.

Вы можете поймать звонок с помощью профилировщика сервера sql. Это будет сгенерировано следующим образом.

declare @p24 int
set @p24=7
exec sp_executesql N'exec stp_Check @IO', --parameter passed
N'@IO bit', -- parameter with the type passed
@IO=1 --parameter value used when executing the sp
select @p24

Проблема вот в чем. Когда вы создаете параметр с DBNull.Value следующим образом.

    object parameter = new SqlParameter("IO", (object)DBNull.Value);

Из профилировщика сервера sql вы можете узнать

declare @p24 int
set @p24=7
exec sp_executesql N'exec stp_Check @IO', --parameter passed
N'@IO nvarchar(4000)', -- the passes type is not boolean
@IO=NULL --parameter value is NULL
select @p24

Верно, что это сработает, но это не то, что задумано. я предпочитаю

using System.Data.SqlTypes;

Вы можете передать значение null следующим образом.

 object parameter = new SqlParameter("IO", System.Data.SqlTypes.SqlBoolean.Null );

Тогда запрос такой.

declare @p24 int
set @p24=7
exec sp_executesql N'exec stp_Check @IO', --parameter passed
N'@IO bit', -- the passes type is boolean
@IO=NULL --parameter value is NULL
select @p24

Есть нулевые значения для всех типов sqltypes, таких как int, bigint, datetime и т. Д. Надеюсь на эту помощь. Ваше здоровье. :)

09.03.2014

3

Используйте DBNull.Value, чтобы передать NULL.

17.11.2012

4

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

ex:

create procedure sp_name(@param1 varhcra(10), @param2 varchar(10)=null)

C#

command.Parameters.AddWithValue("@param1", "value1");
//dont pass any value for param2, it is considered null
17.11.2012
  • Не используйте префикс sp_ для собственных хранимых процедур! Этот префикс зарезервирован Microsoft для собственного использования. 17.11.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..