如何在 MS SQL 中生成表格?
How to generate tables in MS SQL?
我需要生成 table,例如 'test_table_1'、'test_table_2'...我做错了什么?
declare @i int = 1;
declare @i_str varchar(1024);
declare @table VARCHAR(1024);
while (@i < 500)
BEGIN
SET @i = @i + 1;
SET @table = 'TEST_TABLE_' + convert(varchar, @i);
IF NOT EXISTS(SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = @table)
CREATE TABLE @table (
ID INT,
userid INT,
name TEXT,
last_name TEXT,
country TEXT,
city TEXT
)
END
错误:
@table 附近的语法不正确。期待“.”、ID 或 QUOTED_ID
这里的问题是临时 table 使用哈希 #table。您正在尝试将名称作为变量传递。
您可以尝试实现的一种方法是构建一个创建 table 字符串
declare @createTable varchar(1000),
@table varchar(30) = 'table1'
SET @createTable = 'CREATE TABLE #' + @table + ' (ID INT,userid INT, name TEXT,last_name TEXT,country TEXT,city TEXT)'
EXEC (@createTable)
如果您想创建永久表(不是临时表),那么选择之一是使用动态查询。如下图
DECLARE @TableName NVARCHAR(128) DECLARE @Column1Name NVARCHAR(32)
DECLARE @Column1DataType NVARCHAR(32) DECLARE @Column1Nullable NVARCHAR(32)
DECLARE @SQLString NVARCHAR(MAX)
SET @SQLString = 'CREATE TABLE ' + @TableName + '( '+ @Column1Name + '
' + @Column1DataType + ' '+ @Column1Nullable +') '
EXEC (@SQLString)
我需要生成 table,例如 'test_table_1'、'test_table_2'...我做错了什么?
declare @i int = 1;
declare @i_str varchar(1024);
declare @table VARCHAR(1024);
while (@i < 500)
BEGIN
SET @i = @i + 1;
SET @table = 'TEST_TABLE_' + convert(varchar, @i);
IF NOT EXISTS(SELECT *
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = @table)
CREATE TABLE @table (
ID INT,
userid INT,
name TEXT,
last_name TEXT,
country TEXT,
city TEXT
)
END
错误: @table 附近的语法不正确。期待“.”、ID 或 QUOTED_ID
这里的问题是临时 table 使用哈希 #table。您正在尝试将名称作为变量传递。
您可以尝试实现的一种方法是构建一个创建 table 字符串
declare @createTable varchar(1000),
@table varchar(30) = 'table1'
SET @createTable = 'CREATE TABLE #' + @table + ' (ID INT,userid INT, name TEXT,last_name TEXT,country TEXT,city TEXT)'
EXEC (@createTable)
如果您想创建永久表(不是临时表),那么选择之一是使用动态查询。如下图
DECLARE @TableName NVARCHAR(128) DECLARE @Column1Name NVARCHAR(32)
DECLARE @Column1DataType NVARCHAR(32) DECLARE @Column1Nullable NVARCHAR(32)
DECLARE @SQLString NVARCHAR(MAX)
SET @SQLString = 'CREATE TABLE ' + @TableName + '( '+ @Column1Name + '
' + @Column1DataType + ' '+ @Column1Nullable +') '
EXEC (@SQLString)