1

私はSQLにまったく慣れていないので、次のコードがタイトルにエラーを生成している理由がわかりません。

CREATE PROCEDURE Truncate (@table varchar(50))
AS
BEGIN
    SET NOCOUNT ON;
    EXEC ('TRUNCATE TABLE ' + @table);
END
4

4 に答える 4

4

Truncateは予約語であるため、引用符で囲まれていないプロシージャ名では使用できません。あなたはこれを行うことができます:

CREATE PROCEDURE dbo.[Truncate] (@table varchar(50)) 
AS BEGIN     
  SET NOCOUNT ON;     
  EXEC ('TRUNCATE TABLE ' + @table); 
END 

しかし、あなたがそれを実行するとき、あなたは言わなければならないでしょう

dbo.[Truncate] 'tablename'

または、プロシージャの名前をTruncateTableに変更します。

CREATE PROCEDURE dbo.TruncateTable (@table varchar(50)) 
AS BEGIN     
  SET NOCOUNT ON;     
  EXEC ('TRUNCATE TABLE ' + @table); 
END 

その後、あなたはそれを次のように呼ぶことができます

EXEC TruncateTable 'tablename'
于 2012-08-23T23:11:32.070 に答える
3

TRUNCATEはキーワードなので、プロシージャに別の名前を付ける必要があります。例:

CREATE PROCEDURE TruncateTable (@table varchar(50))
AS
BEGIN
    SET NOCOUNT ON;
    EXEC ('TRUNCATE TABLE ' + @table);
END
于 2012-08-23T23:11:49.147 に答える
3

TRUNCATEは、SQLServerで予約されているキーワードです。名前を別の名前に変更するだけです。[TRUNCATE]のように[]をその周りに配置することは避けてください

于 2012-08-23T23:11:57.683 に答える
1

Truncate例を使用する代わりに、プロシージャに他の名前を使用しますtrucateMyTable

理由:

Truncateキーワードであり、

変数/プロシージャ/関数名をキーワードにすることはできません。

于 2012-08-23T23:18:19.297 に答える