LINQ to SQL&存储过程返回类型

时间:2011-02-02 17:09:17

标签: linq-to-sql stored-procedures

这是我的存储过程:

CREATE PROCEDURE PurgeFoo
AS
  DELETE FROM Foo
  RETURN @@ROWCOUNT

我已将此存储过程添加到我的DBML中,但返回类型为“(自动生成类型)”但我是一个int。

我做错了什么?

修改 删除并重新创建存储过程并将其从DBML中删除。现在,返回类型是“(无”)

2 个答案:

答案 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语句运行得更快的列的*。