169 похожих чатов

Добрый день. Не подскажете в чём проблема? Msg 3902, Level 16,

State 1, Procedure dbo.ExecuteOperation, Line 60 [Batch Start Line 2]
The COMMIT TRANSACTION request has no corresponding BEGIN TRANSACTION.
USE [SeaphonServer]
GO
/****** Object: StoredProcedure [dbo].[ExecuteOperation] Script Date: 5/22/2022 12:57:29 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ExecuteOperation]
@AccountTo nvarchar(17) = NULL,
@AccountFrom nvarchar(17) = NULL,
@OperationType int = NULL,
@Cash money = NULL,
@ActionID int = NULL
AS
DECLARE @AccountFromID int
DECLARE @AccountToID int
DECLARE @FromCash Money
DECLARE @ToCash Money
DECLARE @FF NVARCHAR

BEGIN TRANSACTION

SET @AccountFromID = (SELECT dbo.Accounts.ID
FROM dbo.Accounts INNER JOIN dbo.Operations ON dbo.Accounts.AccountID = dbo.Operations.AccountFrom)

SET @AccountToID = (SELECT dbo.Accounts.ID
FROM dbo.Accounts INNER JOIN dbo.Operations ON dbo.Accounts.AccountID = dbo.Operations.AccountTo)

SET @FromCash = (SELECT dbo.Accounts.Cash
FROM dbo.Accounts INNER JOIN dbo.Operations ON dbo.Accounts.AccountID = dbo.Operations.AccountFrom)

SET @ToCash = (SELECT dbo.Accounts.Cash
FROM dbo.Accounts INNER JOIN dbo.Operations ON dbo.Accounts.AccountID = dbo.Operations.AccountTo)

SET @FF = (SELECT FullName
FROM dbo.Accounts INNER JOIN dbo.Operations ON dbo.Accounts.AccountID = dbo.Operations.ID)

IF (@FF IS NOT NULL)
BEGIN
IF (@AccountTo is NOT NULL AND @AccountFrom is NOT NULL) AND (@FromCash >= @ToCash)
BEGIN
UPDATE Accounts SET Cash = @FromCash - @ToCash WHERE ID = @AccountFromID;
UPDATE Accounts SET Cash = @ToCash + @FromCash WHERE ID = @AccountToID;
END
ELSE
BEGIN
ROLLBACK
END
END
ELSE
BEGIN
IF (@ActionID = 1) AND (@FromCash >= @Cash) AND (@ToCash >= @Cash)
BEGIN
UPDATE Accounts SET Cash = @FromCash - @Cash WHERE ID = @AccountFromID;
UPDATE Accounts SET Cash = @ToCash - @Cash WHERE ID = @AccountToID;
END
ELSE
BEGIN
ROLLBACK
END
IF (@ActionID = 2)
BEGIN
UPDATE Accounts SET Cash = @FromCash + @Cash WHERE ID = @AccountFromID;
UPDATE Accounts SET Cash = @FromCash + @Cash WHERE ID = @AccountToID;
END
END
COMMIT TRANSACTION

INSERT INTO Operations(AccountFrom, AccountTo, OperationType, OperationDate, OperationTime, Cash)
VALUES (@AccountFromID, @AccountToID, @OperationType, CONVERT(date, CURRENT_TIMESTAMP), CONVERT(time, CURRENT_TIMESTAMP), @Cash)

3 ответов

26 просмотров

вот это SET @AccountFromID = (SELECT dbo.Accounts.ID FROM dbo.Accounts INNER JOIN dbo.Operations ON dbo.Accounts.AccountID = dbo.Operations.AccountFrom) SET @AccountToID = (SELECT dbo.Accounts.ID FROM dbo.Accounts INNER JOIN dbo.Operations ON dbo.Accounts.AccountID = dbo.Operations.AccountTo) SET @FromCash = (SELECT dbo.Accounts.Cash FROM dbo.Accounts INNER JOIN dbo.Operations ON dbo.Accounts.AccountID = dbo.Operations.AccountFrom) SET @ToCash = (SELECT dbo.Accounts.Cash FROM dbo.Accounts INNER JOIN dbo.Operations ON dbo.Accounts.AccountID = dbo.Operations.AccountTo) SET @FF = (SELECT FullName FROM dbo.Accounts INNER JOIN dbo.Operations ON dbo.Accounts.AccountID = dbo.Operations.ID) очень плохо, записей может быть более одной

Владимир
вот это SET @AccountFromID = (SELECT dbo.Accounts...

И.. Вот ещё. А как можно упростить такое количество подзапросов?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта