2014-02-06 5 views
1

Я получаю результирующий набор с выполнением SQL-задачи. Он имеет только один столбец NullTime varchar. Он имеет три строки, первый - NULL. Я хочу просто перебрать и отобразить значение этих строк. Если я делаю это только по сценарию C#, то проблем нет. NULL отображается как пробел. То же самое можно сделать и с петлей foreach.Назначение SQL NULL для строки SSIS - ошибка SSIS?

Как это сделать с помощью foreach - используйте этот цикл для чтения каждой строки и установите значение каждой строки в строку SSIS User :: STR_WORD. Затем просто выберите User :: STR_WORD с задачей сценария C#.

В чистом методе C# я даже могу присвоить пустое значение (фактически NULL) для строки SSIS. Но с методом loop foreach я получаю сообщение об ошибке из-за значения NULL.

Ошибка -

Ошибка: тип значения быть присвоено переменной «User :: STR_WORD» отличается от текущего типа переменной. Переменные могут не меняться во время выполнения. Переменные типы строгие, за исключением переменных типа Object.

Как исправить эту ошибку? Является ли сценарий единственной альтернативой тому, что кажется ошибочным для цикла ?

ответ

1

Обходной путь для этого - функция Coalesce, которая преобразует NULL в указанное вами значение.

SELECT 
COALESCE([YourColumn], 'EnterValueHere') AS [YourColumn] 
FROM YourTable 

Таким образом, это заменит нуль значением, которое вы хотите использовать вместо этого. Он будет предотвратит внезапный сбой в необычной петле FOR.

Создайте временную таблицу, чтобы увидеть эту работу -

create table ##tester 
(names varchar(25)) 
insert into ##tester 
values(Null) 
insert into ##tester 
values('Not a null value') 
select names from ##tester 
select coalesce(names, 'Null has been obliterated!') from ##tester 
Смежные вопросы