使用SELECT查询保存变量

时间:2018-11-21 10:29:19

标签: sql-server tsql stored-procedures

我编写了一个存储过程,从数据库中删除文件。

但是,当我执行查询时遇到一个错误,那就是我有一个以上的正确值。

但是我想删除表中的所有值。没有得到错误

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。

1 个答案:

答案 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