Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Qracle в SQL Server  [new]
kgMS
Member

Откуда:
Сообщений: 6
Как можно в SQL Server реализовать процедуру

PROCEDURE DeleteAccount
(
var_account_id IN IDType
)
AS
BEGIN
SAVEPOINT start_DeleteAccount;
IF (COMMON_IRAMC.IDFound(var_account_id, 'account_id', 'account') = false) THEN
RAISE_APPLICATION_ERROR (-20539, 'account_id: ' || var_account_id);
END IF;
DELETE account WHERE account_id = var_account_id;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK TO start_DeleteAccount;
RAISE;
END;
END;
19 фев 04, 11:47    [542888]     Ответить | Цитировать Сообщить модератору
 Re: Qracle в SQL Server  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
create proc DeleteAccount(@var_account_id int)
as
begin
set nocount on
DELETE account WHERE account_id = @var_account_id
if @@rowcount=0
begin
declare @errorstr varchar(100)
set @errorstr='account_id : '+cast( @var_account_id as varchar(10))
RAISERROR (@errorstr, 16, 1)
end
end
19 фев 04, 12:00    [542917]     Ответить | Цитировать Сообщить модератору
 Re: Qracle в SQL Server  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Строку if @@rowcount=0 всё-таки лучше будет заменить на if @@error<>0
19 фев 04, 12:04    [542926]     Ответить | Цитировать Сообщить модератору
 Re: Qracle в SQL Server  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
Насколько я понял, надо выдать собщение о попытке удалить запись, которой нет.

create proc DeleteAccount(@var_account_id int) 

as
begin
set nocount on
IF NOT EXISTS(SELECT * FROM account WHERE account_id = @var_account_id) BEGIN
declare @errorstr varchar(100)
set @errorstr='Account not found: '+cast(@var_account_id as varchar(10))
RAISERROR (@errorstr, 16, 1)
RETURN(-1)
END
ELSE
DELETE account WHERE WHERE account_id = @var_account_id
GO
19 фев 04, 12:10    [542955]     Ответить | Цитировать Сообщить модератору
 Re: Qracle в SQL Server  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
ну да...
в исходном тексте на ошибки в delete никаких сообщений нет - просто rallback.
ошибка выдается при
COMMON_IRAMC.IDFound(var_account_id, 'account_id', 'account') =false
до delete

осталось сообразить что бы это еще значило

2parklin :
лишний запрос получается...
а c @@rowcount тот же эффект
19 фев 04, 12:16    [542970]     Ответить | Цитировать Сообщить модератору
 Re: Qracle в SQL Server  [new]
rst
Member

Откуда: Йобурк
Сообщений: 1005
Извиняюсь - 2pkarklin :)
19 фев 04, 12:18    [542974]     Ответить | Цитировать Сообщить модератору
 Re: Qracle в SQL Server  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74925
автор
лишний запрос получается...
а c @@rowcount тот же эффект


Надо посмотреть план выполнения, и наскока часто явление отсутсвия записи.
19 фев 04, 12:24    [542992]     Ответить | Цитировать Сообщить модератору
 Re: Qracle в SQL Server  [new]
))))))))
Member

Откуда:
Сообщений: 400
можно еще посмотреть какие тригера срабатывают при удалении счета.
19 фев 04, 12:29    [543002]     Ответить | Цитировать Сообщить модератору
 Re: Qracle в SQL Server  [new]
kgMS
Member

Откуда:
Сообщений: 6
Всем БОЛЬШОЕ спасибо!!!
19 фев 04, 13:23    [543195]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить