CREATE PROCEDURE DataProcess
(
       @OldName nvarchar(50),
       @NewName nvarchar(50)
)
as
exec('delete from '+@NewName+'.dbo.FIELDSTYLE')
exec('insert into '@NewName+'.dbo.FIELDSTYLE')
exec('select * from '+@OldName+'.dbo.FIELDSTYLE')

解决方案 »

  1.   

    CREATE PROCEDURE DataProcess
    (
           @OldName nvarchar(50),
           @NewName nvarchar(50)
    )
    as
    exec 'delete from '+@NewName+'.dbo.FIELDSTYLE'
    exec 'insert into '+@NewName+'.dbo.FIELDSTYLE'
    exec 'select *
    from '+@OldName+'.dbo.FIELDSTYLE'
      

  2.   

    今想将数据库名作为参数传入存储过程,并在存储过程中作为表名的前缀使用,实现不同数据库之间的数据复制,如下:
    CREATE PROCEDURE DataProcess
    (
           @OldName nvarchar(50),
           @NewName nvarchar(50)
    )
    as
    delete from @NewName.dbo.FIELDSTYLE
    insert into @NewName.dbo.FIELDSTYLE
    select *
    from @OldName.dbo.FIELDSTYLE
    但上面的存储存在错误,请问应如何处理?CREATE PROCEDURE DataProcess
    (
           @OldName nvarchar(50),
           @NewName nvarchar(50)
    )
    as
    declare @sql1 nvarchar(4000),@sql2 nvarchar(4000),@sql3 nvarchar(4000)
    select @sql1='delete from '+@NewName+'.dbo.FIELDSTYLE'
    execute executesql @sql1
    select @sql2='insert into '+@NewName+'.dbo.FIELDSTYLE'
    execute executesql @sql2
    select @sql3='select * from '+@OldName+'.dbo.FIELDSTYLE'
    execute executesql @sql3
      

  3.   

    CREATE PROCEDURE DataProcess
    (
           @OldName nvarchar(50),
           @NewName nvarchar(50)
    )
    as
    exec('delete from '+@NewName+'.dbo.FIELDSTYLE')
    exec('insert into '@NewName+'.dbo.FIELDSTYLE select * From '+@OldName+'.dbo.FIELDSTYLE')