sptablecopy根据旧表创建新表,并去掉IDENTITY属性 -电脑资料

电脑资料 时间:2019-01-01 我要投稿
【meiwen.anslib.com - 电脑资料】

   

    [sql]

    USE master

    go

    SET QUOTED_IDENTIFIER ON

    SET ANSI_NULLS ON

    GO

    IF OBJECT_ID('sp_table_copy','P') IS NOT NULL

    DROP PROC sp_table_copy

    go

    CREATE PROCEDURE sp_table_copy

    (

    @table NVARCHAR(128) ,

    @table_new NVARCHAR(128),

    @is_identity CHAR(1) = 'N'

    )

    AS

    IF OBJECT_ID(@table, 'U') IS NULL

    BEGIN

    SELECT '不存在表:' + @table AS return_result

    RETURN

    END

    IF @is_identity NOT IN ('Y','N')

    BEGIN

    SELECT '@is_identity:只能是Y或N' AS return_result

    RETURN

    END

    DECLARE @sql NVARCHAR(MAX)

    SET @sql = ' SELECT TOP (0) '

    IF @is_identity = 'N'

    SET @sql = @sql

    + STUFF(( SELECT  ',' + ( CASE WHEN is_identity = 1 THEN ' 0 + ' + name + ' AS ' + name + '' ELSE '' + name + '' END )

    FROM   sys.columns

    WHERE  object_id = OBJECT_ID(@table, 'U')

    FOR

    XML PATH('')

    ), 1, 1, '') + CHAR(13) + CHAR(10) + ' INTO ' + @table_new + CHAR(13) + CHAR(10) +  

最新文章