2017-11-10 18 views
0

テーブルを削除して同じ名前の新しいテーブルを作成するストアドプロシージャを作成しようとしています。私は右、テーブルの上にクリックしてScript Table as ... DROP and CREATE To ... New Query Editor Windowをしました。しかしSQL Serverでテーブルを削除して作成する方法2016ストアドプロシージャ

は、空白のストアドプロシージャにスクリプトをコピーした 'という名前のオブジェクトが既に存在し

ので、それは私がプロシージャを作成することはできないだろうMyTable 'データベース

どうすればよいですか?

注:新しいテーブルは、古いテーブルと同じ構造にはなりません。テーブルに他のストアドプロシージャを使用していくつかの変換を行います。最後に、それを削除してゼロから作成します。ここ

は、実際のスクリプトである:

メッセージ102、レベル15、状態1、プロシージャspDropAndCreate、ライン17 [バッチスタートライン9]
:ここ

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE [dbo].[spDropAndCreate] 
AS 
BEGIN 
    SET NOCOUNT ON; 

    IF OBJECT_ID ('dbo.MyTable','U') IS NOT NULL 
     DROP TABLE [dbo].[MyTable] 

    CREATE TABLE [dbo].[MyTable] 
    (
     [ID] [int] IDENTITY(1,1) NOT NULL, 
     [Col1] [nvarchar](50) NULL, 
     [Col2] [nvarchar](50) NULL, 
     [Col3] [nvarchar](50) NULL, 
     [Col4] [nvarchar](50) NULL, 
     [Col5] [nvarchar](50) NULL, 
     [Col6] [nvarchar](50) NULL, 
     [Col7] [nvarchar](50) NULL, 
     [Col8] [nvarchar](50) NULL, 
     [Col9] [nvarchar](50) NULL, 
     [Col10] [nvarchar](50) NULL 
    ) 
    GO 
END 

はエラーメッセージであります 'MyTable'の近くの構文が正しくありません

メッセージ2714、レベル16、状態6、行35
名前付きオブジェクトが既に存在しますデータベース 'MyTableと'

メッセージ102、レベル15、状態1、行156
'終了'

+0

1)スクリプトを投稿する2)実際のエラーを投稿する – Will

答えて

0

の近くに不適切な構文は、バッチを分離するためにDROP TABLE文の後GOを追加します。

0

BEGINENDブロック内にあるGOを削除する必要があります。 GOは、バッチセパレータであり、ブロックが終了する前に実行するようにブロックに伝えるようなものです。詳細はprevious postをご覧ください。

SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 

CREATE PROCEDURE [dbo].[spDropAndCreate] 
AS 
BEGIN 
    SET NOCOUNT ON; 

    IF OBJECT_ID ('dbo.MyTable','U') IS NOT NULL 
    DROP TABLE [dbo].[MyTable] 

    CREATE TABLE [dbo].[MyTable] 
    (
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [Col1] [nvarchar](50) NULL, 
    [Col2] [nvarchar](50) NULL, 
    [Col3] [nvarchar](50) NULL, 
    [Col4] [nvarchar](50) NULL, 
    [Col5] [nvarchar](50) NULL, 
    [Col6] [nvarchar](50) NULL, 
    [Col7] [nvarchar](50) NULL, 
    [Col8] [nvarchar](50) NULL, 
    [Col9] [nvarchar](50) NULL, 
    [Col10] [nvarchar](50) NULL 
    )  
END 
関連する問題