Есть ли способ добавить значение переменной для нового столбца в операторе Alter Table? - PullRequest
1 голос
/ 26 сентября 2019
DECLARE @VName      VARCHAR(8)

SET @VNAme = (
                          SELECT TOP 1 xyz 
                          FROM table
                          WHERE abc = something
                    )

ALTER TABLE table_name 
ADD new_column VARCHAR (8)  NOT NULL DEFAULT @VName

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Сначала прочитайте этот пост о SQL Injection . Тогда вы можете использовать Dynamic SQL на свой страх и риск, что-то вроде следующего:

DECLARE @AlterSQL VARCHAR(MAX) = '
    ALTER TABLE table_name ADD new_column 
        VARCHAR(8) 
        NOT NULL 
        DEFAULT ''' + REPLACE(@VName, '''', '''''') + ''''

EXEC (@AlterSQL)

Если вы хотите, чтобы выражение менялось со временем, прочитайте функцию Ахилешаответить.

0 голосов
/ 26 сентября 2019
CREATE FUNCTION dbo.GetValue()
RETURNS VARCHAR(50)
AS
BEGIN
DECLARE @VName      VARCHAR(8)

SET @VNAme = (
                          SELECT TOP 1 xyz 
                          FROM table
                          WHERE abc = something
                    )
  RETURN @VName
END


ALTER TABLE table_name 
ADD new_column VARCHAR (8)  NOT NULL DEFAULT (dbo.GetValue())

Для достижения этой цели ... вам нужно создать функцию и вызвать ее ...........

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...