实际上我在SQL Server中有两个问题。
有一个类似“创建表”的查询但是对于创建列?如果它存在,请问它是怎么回事?
我需要使用“创建表”但使用参数,但我不知道是否可行。 例如:
@table_name string, @column_name1 int, @column_name2 int, @column_name3 int CREATE TABLE @table_name ( @column_name1, @column_name2, @column_name3 .... );
显然,这只是我想到的,不起作用。有正确的方法吗?
感谢您的帮助!
答案 0 :(得分:1)
通过创建列可能意味着将列添加到现有表中,对吗?
为
使用 ALTER TABLEALTER TABLE TableName ADD newColumn数据类型
更多信息https://msdn.microsoft.com/en-us/library/ms190273.aspx
要动态创建表格,请尝试使用 sp_executesql 功能
sp_executesql 'CREATE TABLE @table_name @column_name1 datatype1,
@column_name2 datatype2,
@column_name3 datatype3
)',
N'@table_name varchar(100),
@column_name1 varchar(100),
@column_name2 varchar(100),
@column_name3 varchar(100)',
@table_name,
@column_name1,
@column_name2,
@column_name3
此处有更多信息https://msdn.microsoft.com/en-us/library/ms188001.aspx
答案 1 :(得分:1)
对于#1,使用ALTER TABLE命令。
对于#2,你是如何执行查询的?您可以先使用完整的命令和表名作为参数创建字符串变量,然后执行查询。类似的东西:
declare @ CustomerID int
set @ CustomerID = 3262833
declare @sql nvarchar(1000)
set @sql = N'SELECT * FROM [dbo].[Customers] AS [tbCustomers] WITH (NOLOCK)
WHERE tbCustomers.ID = '+ + cast(@CustomerID as nvarchar(10))
exec (@sql)
答案 2 :(得分:1)
CREATE PROCEDURE create_table
@table varchar(10),
@ID varchar(10),
@Name varchar(20)
AS
BEGIN
Declare @sql nvarchar(MAX)
SET NOCOUNT ON
Set @sql = 'CREATE TABLE '+@table+'('+@ID+' bigint NOT NULL,'+@Name+' varchar(25)) ON [PRIMARY]';
exec (@sql)
END
GO