我想为数据库表创建动态名称。我声明变量并将其用作我的表名。
错误:' @ sample'附近的语法不正确。期待'。',ID或QUOTED_ID
CREATE PROCEDURE [dbo].[sp_SAMPLE]
@name nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sample nvarchar(50);
SET @sample = 'tbl_function_' + @name;
Create Table @sample
(
id int not null,
UserType nvarchar(50) null,
paramater2 nvarchar(50) null
)
END
有没有办法让我的表名动态?谢谢。
答案 0 :(得分:2)
我不确定为什么你想要这样做。但是,您可以使用动态SQL来执行此操作:
CREATE PROCEDURE [dbo].[sp_SAMPLE]
@name nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql nvarchar(max);
SET @sql = '
Create Table tbl_function_@name
(
id int not null,
UserType nvarchar(50) null,
paramater2 nvarchar(50) null
)';
SET @sql = REPLACE(@sql, '@name', @name);
EXEC sp_executesql @sql;
END;
为什么要为每个@name
创建单独的表,而不是仅在列中插入@name
行?
答案 1 :(得分:0)
CREATE PROCEDURE [dbo].[sp_SAMPLE]
@name nvarchar(50)
AS
BEGIN
SET NOCOUNT ON
DECLARE @sql varchar(4000);
SET @sql = '
Create Table tbl_function_'+@name+'
(
id int not null,
UserType nvarchar(50) null,
paramater2 nvarchar(50) null
)'
EXEC (@sql)
END