SQL Query从表中定义的表中删除数据

Aro*_*han 1 sql t-sql sql-server microsoft-dynamics dynamics-nav-2009

我正在尝试从我的SQL库中的许多表中删除数据.

在数据库中,我有一个名为company的表,其中包含我需要从中删除数据的每个表的名称.

假设我的公司表中有3家公司.

我想要做的是删除每个公司的某些表中的所有记录.

所以,在公司表中我有以下3条记录:

1  2  3
Run Code Online (Sandbox Code Playgroud)

数据库中还有以下表格,用于描述每个公司的扫描文档.

dbo.1.documents
dbo.2.documents
dbo.3.documents
Run Code Online (Sandbox Code Playgroud)

我要做的是创建一个将通过dbo.company表运行的SQL查询,并根据在那里找到的公司名称清除文档表.

这是我的代码:

DECLARE @MyCursor CURSOR;
DECLARE @MyField varchar;
BEGIN
SET @MyCursor = CURSOR FOR
select top 1000 [Name] from dbo.Company    

OPEN @MyCursor 
FETCH NEXT FROM @MyCursor 
INTO @MyField

WHILE @@FETCH_STATUS = 0
BEGIN

  delete * from 'dbo.'+@MyField+'$documents'

  FETCH NEXT FROM @MyCursor 
  INTO @MyField 
END; 

CLOSE @MyCursor ;
DEALLOCATE @MyCursor;
END;
Run Code Online (Sandbox Code Playgroud)

我不确定语法应该如何,但我想它是这样的.

有人关心如何根据dbo.company.name中的记录动态删除数据?

SAS*_*SAS 6

使用动态sql.

用下面的代码替换delete-statement(声明可以在开始时完成):

DECLARE @sql NVARCHAR(1000)
SET @sql = N'delete from dbo.'+CONVERT(VARCHAR,@MyField)+'documents'
EXEC sp_executesql @sql
Run Code Online (Sandbox Code Playgroud)