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. Вы хотите это как значения по умолчанию? Чего ты пытаешься достичь?

Другие вопросы по тегам