使用动态SQL在旅途中创建表

时间:2012-11-18 08:59:44

标签: sql sql-server dynamic-sql

我需要为每个注册我的应用程序的客户创建新表。

例如,我有两个表

Order_History_<ClientIdentifier>
Transcation_Log_<ClientIdentifier>

在SQL Server中,如何在旅途中创建具有自定义名称的表格,以及如何根据访问我的应用程序的客户端查询它们。

1 个答案:

答案 0 :(得分:1)

非常简单的方法:

create procedure CreateTableForUser
(
    @UserName nvarchar(100)
)
AS
BEGIN

declare @createScript nvarchar(max) =
'
create table dbo.Order_History_<ClientIdentifier>
(
    id int PRIMARY KEY,
    val nvarchar(100)
)
'

declare @createScript2 nvarchar(max) =
'
create table dbo.Transcation_Log_<ClientIdentifier>
(
    id int PRIMARY KEY,
    val nvarchar(100)
)
'

set @createScript = REPLACE(@createScript, '<ClientIdentifier>', @UserName)
set @createScript2 = REPLACE(@createScript2, '<ClientIdentifier>', @UserName)

exec sp_executesql @createScript
exec sp_executesql @createScript2

END

如果你需要更多“自动”的东西,比如通过复制他所有的字段和密钥从模板表创建表,我会使用sys。观点但写起来要长一点:P