我正在写一个以DB名称作为输入参数的存储过程。我正在动态地创建一些物理表。如果表已经存在,那么我需要删除该表。
DECLARE @TargetDBName NVARCHAR(100) = 'PRD_Inventory'
DECLARE @TargetSchema NVARCHAR(100) = 'usr'
当前查询
IF OBJECT_ID('TempUserData') IS NOT NULL DROP TABLE TempUserData
预期格式:
IF OBJECT_ID('@TargetDBName.@TargetSchema.TempUserData') IS NOT NULL DROP TABLE @TargetDBName.@TargetSchema.TempUserData
2条答案
按热度按时间798qvoo81#
为此,您需要动态构建SQL。另请注意,在定义引用对象名的变量时,您应该使用 sysname 类型。
以下代码可以在当前支持的SQL Server上运行,当然也可以在SQL Server 2008上运行,但未经测试。
vltsax252#
它可能正在起作用: