如何使用表名称的属性在存储过程中创建表?

时间:2011-02-13 20:52:10

标签: sql sql-server

这是一个很长的标题,但它说明了一切。我正在尝试创建一个创建表的过程。我希望可以通过在参数中写入来选择表的名称。我已经减少了一些代码,所以你可以看到我的问题。

我到目前为止,但它没有用 - 任何想法?

go 
create proc newUser 
@username varchar 
as

execute 'create table '@username'(
id int,
name varchar
)'

1 个答案:

答案 0 :(得分:4)

此代码使用引号来完成工作以避免SQL注入:

CREATE PROCEDURE newUser  
  @username NVARCHAR(1000) 
AS  

DECLARE @cmd NVARCHAR(1000)
SET @cmd=N'CREATE TABLE '+quotename(@username)+N'(id INT, name NVARCHAR(1000))';
EXEC (@cmd);