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中的记录动态删除数据?
使用动态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)