我不相信我的头衔准确地代表了我的问题,但这就是我所拥有的:
DECLARE @ListOfTables TABLE(
RowID INT NOT NULL PRIMARY KEY IDENTITY(1,1)
, TableName VARCHAR(200)
)
DECLARE @RowsToProcess INT
DECLARE @CurrentRow INT
DECLARE @TableName VARCHAR(200)
INSERT INTO @ListOfTables (TableName)
VALUES ('Books')
INSERT INTO @ListOfTables (TableName)
VALUES ('Magazines')
INSERT INTO @ListOfTables (TableName)
VALUES ('Essays')
SET @RowsToProcess = @@ROWCOUNT
SET @CurrentRow = 0
我想循环遍历此表并删除。
WHILE @CurrentRow < @RowsToProcess
BEGIN
SET @CurrentRow = @CurrentRow+1
SELECT @TableName = TableName
FROM @ListOfTables
WHERE RowID = @CurrentRow
DELETE FROM @TableName
END
实际上,我的删除并不仅仅是删除表格 - 它具有特定的标准。我已将其简化为演示目的。
我在这里得到的错误是:Must declare the variable '@TableName'.
我已将其移至WHILE循环中并收到相同的错误。
我可以在这做什么?是否有可能做我想做的事情?
答案 0 :(得分:1)
假设您的数据库中实际上有表名为书籍,杂志和论文,并且您想从中删除它们,或者对它们进行一些查询,则需要使用动态SQL。不确定它是如何在MySQL中完成的,但在SQL-Server中,它就像这样(高度简化的例子):
SET @sql = 'DELETE FROM ' + @TableName;
EXEC (@sql);