Các lượt nộp
    Danh sách bài
    Trang chủ
    Báo lỗi
    solution

    Đề bài: [SQL Server] Thủ tục chuyển tiền có TRY CATCH

    Bảng taikhoan(id, chu_tk, so_du).

    Hãy tạo thủ tục dbo.ChuyenTien nhận @tu INT, @den INT, @so_tien INT. Thủ tục phải:

    1. Mở một transaction.
    2. Trừ @so_tien khỏi tài khoản @tu, cộng vào tài khoản @den.
    3. Nếu sau khi trừ mà số dư tài khoản @tu bị âm thì ROLLBACK và không thay đổi gì; ngược lại COMMIT.
    4. Bọc toàn bộ trong BEGIN TRY ... BEGIN CATCH để mọi lỗi phát sinh đều ROLLBACK.

    Sau đó gọi dbo.ChuyenTien 1, 2, 500; rồi in id và so_du của tất cả tài khoản, sắp xếp theo id.

    • Định dạng đầu vào:

      Bảng taikhoan đã được tạo sẵn. Cột: id INT, chu_tk NVARCHAR(50), so_du INT. Luôn có tài khoản id = 1 và id = 2.

    • Ràng buộc đầu vào:

      0≤so_du≤1090 \le so\_du \le 10^90≤so_du≤109.

    • Định dạng đầu ra:

      Mỗi dòng gồm id và so_du sau khi chạy, cách nhau bởi TAB.

    Ghi chú:

    Bài làm phải bắt đầu bằng một dòng GO. Trong CATCH nhớ kiểm tra IF @@TRANCOUNT > 0 trước khi ROLLBACK.

    Ví dụ:

    Đầu vào:

    CREATE TABLE taikhoan(id INT, chu_tk NVARCHAR(50), so_du INT);
    INSERT INTO taikhoan(id,chu_tk,so_du) VALUES (1,N'An',1000),(2,N'Binh',300);

    Đầu ra:

    1	500
    2	800

    Chủ đề

    🗄️ Cơ sở dữ liệuSQL ServerSQL Server: Stored ProcedureTất cả môn học

    Đang tải editor...