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
答案 0 :(得分:0)
先读this post about SQL Injection。 然后 ,您可以自担风险使用Dynamic SQL,如下所示:
DECLARE @AlterSQL VARCHAR(MAX) = '
ALTER TABLE table_name ADD new_column
VARCHAR(8)
NOT NULL
DEFAULT ''' + REPLACE(@VName, '''', '''''') + ''''
EXEC (@AlterSQL)
如果您希望表达式随时间变化,请阅读akhilesh的函数答案。
答案 1 :(得分:-1)
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())
为实现该目标...您已经创建了一个函数并调用它...........