У меня есть рекурсивная хранимая процедура на SQL Server. Я использую классы, созданные с помощью Linq-to-SQL, и перетаскиваю & процедуру удаления в этот класс.linq to sql не удалось выполнить вызов процедуры процедуры
Другие процедуры работают нормально, но это процедура завершается с исключением:
«System.Void» не допускается тип возврата . недопустимая операция исключение
Хранимая процедура:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[delListEnterprise]
@pin_list_enterprise_id numeric(38,0),
@cCriteria varchar(250) = null,
@iLevel int = 0
AS
begin
set nocount on
declare
@cSQL varchar(255),
@cChildCriteria varchar(255),
@iLevelNew int
IF @iLevel = 0
BEGIN
set @cCriteria='parent_list_enterprise_id='+cast(@pin_list_enterprise_id as varchar(30));
delete from list_enterprise where [email protected]_list_enterprise_id;
Create Table #tblCascadeDelete (CallLevel int NOT NULL, PKValue int NOT NULL)
END
SET @cSQL = 'INSERT INTO #tblCascadeDelete (CallLevel, PKValue) SELECT ' + Convert(varchar(3), @iLevel) + ' As CallLevel, list_enterprise_id As PKValue FROM list_enterprise WHERE ' + @cCriteria
EXEC (@cSQL)
IF @@RowCount > 0
BEGIN
SET @cChildCriteria = '[parent_list_enterprise_id] IN (SELECT [PKValue] FROM #tblCascadeDelete Where [CallLevel] = ' + Convert(varchar(3), @iLevel) + ')'
SET @iLevelNew = @iLevel + 1
EXEC delListEnterprise null,@cChildCriteria, @iLevelNew
END
SET @cSQL = 'DELETE FROM list_enterprise WHERE ' + @cCriteria
EXEC (@cSQL)
IF @iLevel = 0
BEGIN
Drop Table #tblCascadeDelete
END
ELSE
DELETE FROM #tblCascadeDelete WHERE CallLevel = @iLevel
end
Это работает, если я запустить его в SQL Server Management Studio.