我编写了一个存储过程,从数据库中删除文件。
但是,当我执行查询时遇到一个错误,那就是我有一个以上的正确值。
但是我想删除表中的所有值。没有得到错误
CREATE PROCEDURE [dbo].[DeleteArticle]
@Article_ID int
AS
DECLARE @IDS int
SET @IDS = (SELECT [File_ID] FROM Article_Files WHERE Article_ID = @Article_ID);
DELETE FROM Article_Files WHERE Article_ID = @Article_ID;
DELETE FROM Files WHERE [FILE_ID] IN (@IDS);
DELETE FROM Article WHERE Article_ID = @Article_ID;
RETURN 0
错误是在5-6六行代码中,我设置了@IDS。
答案 0 :(得分:1)
您不能存储将许多项目返回到SELECT
变量中的INT
的结果
DECLARE @IDS int
SET @IDS = (SELECT [File_ID] FROM Article_Files WHERE Article_ID = @Article_ID);
在这种情况下,@IDS
值将是File_ID
的最后一个SELECT
您可以尝试
DECLARE @Ids TABLE (Id INT)
INSERT INTO @Ids
SELECT [File_ID] FROM Article_Files WHERE Article_ID = @Article_ID
DELETE FROM Article_Files WHERE Article_ID = @Article_ID;
DELETE FROM Files WHERE [FILE_ID] IN (SELECT Id FROM @Ids);
DELETE FROM Article WHERE Article_ID = @Article_ID;
RETURN 0