在线等:请问如何在动态sql中判断传入的参数是数据库中指定的表名?
求助:我写了一个共用的存储过程,对传入的表参数进行父子节点的删除操作,但是对某个表还要进行其他关联操作,所以需要在动态sql中把这个表找出来,调试中总是报错把表名当成了列名,请问怎么解决?
BEGINsql 动态sql
DECLARE @SQL AS nvarchar(max)
SET @SQL =
'WITH RecursiveCte AS
(
SELECT 1 as Level, H1.Id, H1.ParentId FROM ' + @TableName + ' H1
WHERE id = ' + CAST(@Id as Nvarchar(max)) + '
UNION ALL
SELECT RCTE.level + 1 as Level, H2.Id, H2.ParentId FROM ' + @TableName + ' H2
INNER JOIN RecursiveCte RCTE ON H2.ParentId = RCTE.Id
)
SELECT id
INTO #tmpTable
FROM RecursiveCte
if '+ @TableName +'=object_id(''数据库中指定的表名'',''U'')--这个判断条件该怎么写?
begin
---进行其他操作
end
delete from ' + @TableName + ' where id in( SELECT id
FROM #tmpTable)
'
EXEC sp_executesql @SQL;
END