sp_executesql: добавить столбец с оператором case
Это пример кода того, чего я хотел бы достичь, я хочу добавить столбец в таблицу с некоторыми конкретными переменными кода. Тем не менее, я не могу понять, как sp_executesql проходит через него. Любая помощь приветствуется
DECLARE @SQLQUERY NVARCHAR (max)
DECLARE @Table VARCHAR (200) = 'Table_Name'
DECLARE @Column VARCHAR (200) = 'Column_Name'
DECLARE @Code1 int = 1
DECLARE @Code2 int = 2
DECLARE @Code3 int = 3
SET @SQLQUERY = 'ALTER TABLE' + @Table + 'ADD' @Column
AS CASE WHEN FirstColumn IS NULL THEN @Code1
WHEN SecondColumn IS NULL THEN @Code2
ELSE @Code3
Exec sp_executesql @SQLQUERY
3 ответа
Вам нужно построить alter
выведите все как строку и затем выполните ее, например, ваш запрос должен выглядеть следующим образом:
SET @SQLQUERY = 'ALTER TABLE ' + @Table + ' ADD ' + @Column +
' AS CASE WHEN FirstColumn IS NULL THEN ' + str(@Code1) +
' WHEN SecondColumn IS NULL THEN ' + str(@Code2) +
' ELSE ' + str(@Code3) + ' END'
Примечание: я использовал str(@Code1)
так как он был объявлен как int
тогда вы можете выполнить инструкцию нормально
Exec sp_executesql @SQLQUERY
Надеюсь, что это поможет вам
Скрипт наконец-то сработал в соответствии с этим:
DECLARE @Code1 int = 1
DECLARE @Code2 int = 2
DECLARE @Code3 int = 3
DECLARE @SQLQUERY NVARCHAR (max)
SET @SQLQUERY = N'ALTER TABLE Table ADD Column
AS CASE WHEN FirstColumn IS NULL THEN' STR(@Code1) +
'WHEN SecondColumn IS NULL THEN' STR(@Code2) +
' ELSE' str(@Code3) + ' END'
Exec sp_executesql @SQLQUERY
Взгляните на sp_executesql
Вам нужно построить запрос в виде строки.
Я заметил несколько проблем по вашему запросу:
- FirstColumn и SecondColumn не объявлены столбцом
Если вы хотите добавить новый столбец, вам нужно указать тип данных для столбца. пожалуйста, посмотрите это
ALTER TABLE Tablecolumn ALTER COLUMN NewColumn NVARCHAR(20) NOT NULL;
для условий @Code1, @Code2 и @Code3. Вы хотите это как значения по умолчанию? Чего ты пытаешься достичь?