Ожидая общего решения от других экспертов, приведена целесообразная версия, которая подходит, если структура таблицы известна и стабильна. Этот тест данные: -
create table #mytable (
col1value varchar (50),
col2value int,
col3value decimal(10, 5),
col4value date,
col5value datetime
);
insert into #mytable values
(null,1,234.567,'2013-12-20','2013-01-07T17:30:24.567'),
('def',null,987.645,'2013-12-21','2013-01-01'),
('abc',17,null,'2013-12-20','2013-10-07T11:31:21.517'),
('jkl',2,3232.32,null,'2013-01-01 01:02:03.456'),
('mno',2,7.4006,'2012-07-04',null)
Позволяет этот код: -
select 'insert into #myTable values (' +
isnull('''' + col1value + '''','null') + ',' +
isnull(convert(varchar(50),col2value),'null') + ',' +
isnull(convert(varchar(50),col3value),'null') + ',' +
isnull('''' + convert(varchar(50),col4value) + '''','null') + ',' +
isnull('''' + convert(varchar(50),col5value,121) + '''','null') +
')'
from #mytable
Для производства: -
insert into #myTable values (null,1,234.56700,'2013-12-20','2013-01-07 17:30:24.567')
insert into #myTable values ('def',null,987.64500,'2013-12-21','2013-01-01 00:00:00.000')
insert into #myTable values ('abc',17,null,'2013-12-20','2013-10-07 11:31:21.517')
insert into #myTable values ('jkl',2,3232.32000,null,'2013-01-01 01:02:03.457')
insert into #myTable values ('mno',2,7.40060,'2012-07-04',null)
Вы можете защитить от изменений структуры (в некоторой степени), включив столбец список в операциях insert
. Даже со списком столбцов - если кто-то добавляет столбец с нулевым значением в таблицу без значения по умолчанию - ваши вставки будут терпеть неудачу (если вы не массируете их при изменении схемы).
Я бы ВСЕГДА использовал фабрику кода для создания такого кода (т.SP, который работает над информационной схемой, - которая использует типы столбцов для создания кода для сериализации каждого типа значения).
В приведенном выше примере рассматриваются только те из них, которые вам могут потребоваться, но вы должны иметь возможность определить, как подойти ко всем другим типам.
Спасибо, но мое требование - создать сценарий, который можно запускать изолированно. Поэтому я пытаюсь создать файл, который будет иметь в нем определенные инструкции INSERT, которые пользователь может выполнить, поэтому мне нужно вернуть список с разделителями-запятыми значений, возвращаемых SELECT * – Mike