备份表的动态变量名称

里尔孔42

我正在尝试编写一个存储过程来备份表,但是我不断得到:

消息402,级别16,状态1,行9数据类型varchar和datetime2在add运算符中不兼容。

消息402,级别16,状态1,行15数据类型varchar和datetime2在add运算符中不兼容。

我怎样才能解决这个问题?

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

DECLARE @CreateDynamicSQL nvarchar(1000);
DECLARE @CopyDynamicSQL nvarchar(1000);

SET @CreateDynamicSQL='CREATE TABLE [dbo].[paul_AccountContact_Backup_'+@SYSDATETIME+'](
    [AccountID] [int] NOT NULL,
    [ContactID] [int] NOT NULL
) ON [PRIMARY]
GO'

SET @CopyDynamicSQL='select * into [dbo].[paul_AccountContact_Backup_'+@SYSDATETIME+'] from paul_AccountContacts'

EXEC(@CreateDynamicSQL);
EXEC(@CopyDynamicSQL);
MJH

您必须将date变量转换为字符串,以便可以将其连接:

SET @CreateDynamicSQL='CREATE TABLE [dbo].[paul_AccountContact_Backup_' 
+ convert(varchar(20), @SYSDATETIME, <Format>) + '](

格式参数的文档:https :
//docs.microsoft.com/zh-cn/sql/t-sql/functions/cast-and-convert-transact-sql?view=sql-server-2017

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章