簡體   English   中英

數據庫表的動態名稱-存儲過程

[英]Dynamic Name for Database Table - Stored Procedure

我想為數據庫表創建動態名稱。 我聲明變量並將其用作表名。

錯誤:“ @ 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

有什么辦法可以使我的表名動態化? 謝謝。

我不確定您為什么要這樣做。 但是,您可以使用動態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的行?

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM