这是我的存储过程:
CREATE PROCEDURE PurgeFoo
AS
DELETE FROM Foo
RETURN @@ROWCOUNT
我已将此存储过程添加到我的DBML中,但返回类型为“(自动生成类型)”但我是一个int。
我做错了什么?
修改 删除并重新创建存储过程并将其从DBML中删除。现在,返回类型是“(无”)
答案 0 :(得分:2)
您可以将返回更改为SELECT。这样,您就可以获得正确的记录集。
CREATE PROCEDURE PurgeFoo
AS
DELETE FROM Foo
SELECT @@ROWCOUNT AS RowsDeleted
GO
或OUTPUT参数,如下所示:
CREATE PROCEDURE PurgeFoo
@RowsDeleted int = 0 OUTPUT
AS
DELETE FROM Foo
SET @RowsDeleted = @@ROWCOUNT
GO
RETURN值对状态和错误代码最有用,而不是有意义的数据。
答案 1 :(得分:0)
为什么不删除SELECT COUNT(*)FROM Foo来计算行数,因为所有行都被删除了?像这样:
CREATE PROCEDURE PurgeFoo
@Rows INT OUTPUT
AS
SET @Rows = SELECT COUNT(*) FROM Foo
DELETE FROM Foo
然后,当您调用SP时,可以将输出参数的值作为INT获取。此外,您可以更改要使SELECT语句运行得更快的列的*。