КК
Кристина Курилович

SQL хранимая процедура).

помогите пожалуйста. не понимаю как работать с выходными параметрами.. .
нужно сделать процедуру, которая удалит все данные об определенным человеке. но если с ним есть связанные заказы, удаление нужно будет отменить. возвращаемое значение должно определить успешность операции.
я сделал так процедуру.
CREATE PROCEDURE spt_opklie
AS
select *
FROM [Order] o LEFT OUTER JOIN Customer c
ON o.IdCust = c.IdCust
WHERE o.IdCust = 22
return 1

так вызов:
declare @return_value int
EXEC @return_value=spt_opkli
if @return_value = 1
begin
print 'клиент не удален'
end
else
begin
print 'удалить'
delete FROM [Order]
end

но... вызов не работает. помогите пожалуйста!!! !
вот по этой таблице:

спасибо Вам!!!! *лучи добра*
з. ы. мы делаем в среде SQL Server Management Studio

SA
Samvel Atayants

В условии задачи сказано - сделать процедуру, пытающуюся удалить какого-то клиента, и возвращающую какой-то признак успеха или неуспеха. Так что, очевидно, процедура должна иметь два параметра: идентификатор клиента (@CustomerID) и результат выполнения (@Result).

Эта процедура может выглядеть примерно так:

CREATE PROCEDURE dbo.DeleteCustomer (
@CustomerID int,
@Result int OUTPUT
)
AS
BEGIN

-- проверяем, нет ли заказов
IF EXISTS(SELECT * FROM [ORDER] WHERE IdCust = @CustomerID)
BEGIN
SET @Result = 0
RETURN
END

-- удаляем клиента
DELETE FROM Customer WHERE IdCust = @CustomerID
SET @Result = 1

END

Во всяких разных языках программирования есть свои механизмы для вызова хранимых процедур базы данных, а в каком-нибудь QueryAnalyzer-е или где вы там отлаживаете запросы, эту процедуру для проверки можно вызвать так:

DECLARE @Result integer
EXEC dbo.DeleteCustomer 11, @Result OUTPUT
PRINT 'результат выполнения: ' + cast(@Result as varchar(256))

И всё-таки, наверно, в заголовке лучше указывать диалект, а то у каждой СУБД свои заморочки...

Похожие вопросы
Правильный IF в хранимой процедуре, в моем варианте после END IF; и end пишет ошибку
Объеденный запрос SQL
SQL не импортируется (
Як мені зробити збережені процедури в SQL?
Использование процедуры как таблицу в SQL Server
SQL - с чем его едят
как вызвать хранимую процедуру в PowerShell? Необходимо выполнить хранимую процедуру с передачей параметров в неё из PS.
В чём разница между SQL и MySQL? Похож ли синтаксис у MySQL и SQL?
SQL запрос, нужен первый результат!! (PL SQL)
как результат хранимой процедуры вывести в поле таблицы? delphi