Я ищу простой способ создания операторов DROP TABLE, CREATE TABLE и INSERT VALUES из оператора SELECT для моих примеров, которые я публикую на Stackoverflow.
Обычно я могу получить инструкцию SELECT для возврата небольшого подмножества данных, которые я хочу использовать в качестве образца. Оттуда я хотел бы создать DROP TABLE, CREATE TABLE и INSERT VALUES.
Вот пример оператора SELECT
SELECT ad.ApplicantDetailID,
ad.ApplicantMasterID,
ad.DateEffective,
ad.CorrespondenceTypeID,
ad.Value
FROM tblApplicantDetail AS ad
WHERE ad.CorrespondenceTypeID = 34
AND ad.ApplicantMasterID IN (41145,37046,45536,46764)
ORDER BY ad.ApplicantMasterID, ad.DateEffective
Это состояние SELECT возвращает 6 строк.
То, что я хотел бы сделать, это сделать функцию SELECT в качестве ввода и сгенерировать следующий код TSQL (DROP TABLE, CREATE TABLE и INSERT VALUES). Второй параметр можно использовать для отправки имени временной таблицы (то есть в приведенном ниже примере #ApplicantDetail)
IF OBJECT_ID('tempdb..#ApplicantDetail') IS NOT NULL DROP TABLE #ApplicantDetail
CREATE TABLE #ApplicantDetail (
[ApplicantDetailID] [int] NOT NULL,
[ApplicantMasterID] [int] NOT NULL,
[DateEffective] [datetime] NOT NULL,
[CorrespondenceTypeID] [int] NOT NULL,
[Value] [varchar](20) NULL
)
GO
INSERT #ApplicantDetail VALUES (197542,37046,'2003-05-13 00:00:00.000',34,'8')
INSERT #ApplicantDetail VALUES (217963,41145,'1994-03-11 00:00:00.000',34,'')
INSERT #ApplicantDetail VALUES (217965,41145,'1994-03-21 00:00:00.000',34,'NS')
INSERT #ApplicantDetail VALUES (238961,45536,'2003-10-22 00:00:00.000',34,'')
INSERT #ApplicantDetail VALUES (238963,45536,'2003-12-03 00:00:00.000',34,'4')
INSERT #ApplicantDetail VALUES (244910,46764,'2003-12-03 00:00:00.000',34,'NS')
Оттуда я надеюсь просто вырезать и вставить сгенерированный код в Stackoverflow.
Эта функция сэкономит мне (сообществу Stackoverflow) много времени при настройке некоторых образцов тестовых данных.
Так как #ApplicantDetail создан выше, вы можете использовать этот оператор SELECT в своем примере. Он вернет две записи.
SELECT *
FROM #ApplicantDetail AS ad
WHERE ad.ApplicantMasterID = 45536
Может быть, вызвать функцию GenerateSampleTSQLData.
Вот идея о том, как может выглядеть функция. Я не эксперт по созданию функций, поэтому меняйте синтаксис по мере необходимости.
GenerateSampleTSQLData('SELECT *
FROM #ApplicantDetail AS ad
WHERE ad.ApplicantMasterID = 45536',
'#AppDet')
Я работаю на SQL Server 2005, но буду обновляться до 2008.
Если бы вы могли заставить его работать на одном из них, это было бы здорово.
Теперь я собираюсь опубликовать еще один вопрос, который фактически будет использовать этот пример данных.
Большое спасибо.