0
У меня есть два отдельных развертывания таблицы учеников. В одном случае таблица учеников содержит идентификатор отдела, а в другом случае он не содержит идентификатор отдела.Динамическое создание инструкции вставки на основе условий
У меня есть общий сценарий развертывания сообщений для обоих случаев, чтобы вставить значение в таблицу учеников.
CREATE TABLE dbo.Student
(
DeptId UNIQUEIDENTIFIER,
StudentName VARCHAR(20)
)
GO
DECLARE @DeptId UNIQUEIDENTIFIER
IF COL_LENGTH('dbo.Department', 'DeptId') IS NOT NULL BEGIN
SELECT @DeptId = DeptId
FROM dbo.Department
WHERE DeptName = 'Computer'
END
INSERT INTO dbo.Student(DeptId, StudentName)
SELECT @DeptId, 'TBAG'
Но когда у меня нет отдела Id колонка этот скрипт не работает
Msg 207, Level 16, State 1, Line 23 Неверное имя столбца 'DeptId'.
Если вы хотите запустить те же самые запросы на один и те же таблицы, исправить таблицы поэтому они имеют одни и те же столбцы. –
Для какого-то клиента я не хочу давать функцию дебета Id, в то время как другая может иметь эту функцию. Как я могу сохранить этот сценарий одинаковым для обоих случаев. Я имею в виду, что я открыт для изменения запроса в строку и запуска его под EXEC. Но мне сложно преобразовать это в строку. – TBAG
. , Вероятно, вы должны контролировать такие функции, используя параметры на более высоком уровне. Структуры данных должны быть одинаковыми, или вы столкнетесь с кошмаром обслуживания. Таким образом, код может быть заполнен операторами 'if', проверяющими, включена ли функция. –