2017-03-09 10 views
0

データベーステーブルの動的な名前を作成します。変数を宣言してテーブル名として使用します。データベーステーブルの動的な名前 - ストアドプロシージャ

エラー: '@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 

は、私のテーブル名を動的にする方法はありますか?ありがとうございました。

答えて

2

私は確信していませんなぜあなたはこれをしたいでしょう。あなただけではなく、列に@nameで行を挿入する、各@nameのために別々のテーブルを作成したいと思うのはなぜ

CREATE PROCEDURE [dbo].[sp_SAMPLE] 
    @name nvarchar(50) 
AS 
BEGIN 
    SET NOCOUNT ON; 

    DECLARE @sql nvarchar(max); 

    SET @sql = ' 
Create Table [email protected] 
(
    id int not null, 
    UserType nvarchar(50) null, 
    paramater2 nvarchar(50) null 
)'; 

    SET @sql = REPLACE(@sql, '@name', @name); 

    EXEC sp_executesql @sql; 
END; 

:しかし、あなたは、動的SQLを使用してそれを行うことができますか?

+0

ありがとうございます。 @nameというカラムをテーブルに追加していただき、ありがとうございます。 – EnzoZow

0
CREATE PROCEDURE [dbo].[sp_SAMPLE] 
@name nvarchar(50) 
AS 
BEGIN 
SET NOCOUNT ON 

DECLARE @sql varchar(4000); 

SET @sql = ' 
Create Table tbl_function_'[email protected]+' 
(
id int not null, 
UserType nvarchar(50) null, 
paramater2 nvarchar(50) null 
)' 

EXEC (@sql) 
END 
+0

いくつかのコメントはいいと思いますが、それ以外の場合はコードダンプ – Ted

+0

@Tedこれはコードダンプではなく結果を得る別の方法です –

+0

いいえ、それは単なるコードダンプです – Ted

関連する問題