Тип возврата LINQ to SQL и хранимой процедуры - PullRequest
2 голосов
/ 02 февраля 2011

Вот моя хранимая процедура:

CREATE PROCEDURE PurgeFoo
AS
  DELETE FROM Foo
  RETURN @@ROWCOUNT

Я добавил эту хранимую процедуру в мой DBML, но тип возвращаемого значения - "(автоматически сгенерированный тип)", но я являюсь int.

Что я делаю не так?

EDIT: Удалил и заново создал процедуру хранения и удалил ее из DBML. Теперь тип возвращаемого значения "(Нет")

Ответы [ 2 ]

2 голосов
/ 02 февраля 2011

Вы можете изменить возврат на 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 наиболее полезно для кодов состояния и ошибок, а не для значимых данных.

0 голосов
/ 02 февраля 2011

Почему бы не сделать SELECT COUNT (*) FROM Foo для подсчета строк перед их удалением, поскольку все строки удалены? Примерно так:

CREATE PROCEDURE PurgeFoo
@Rows INT OUTPUT
AS
SET @Rows = SELECT COUNT(*) FROM Foo
DELETE FROM Foo

Затем, когда вы вызываете SP, вы можете получить значение выходного параметра как INT. Кроме того, вы можете изменить * на какой столбец, чтобы оператор SELECT выполнялся быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...