Tôi đã cố gắng tìm hiểu điều này một chút và tôi nghĩ đã đến lúc yêu cầu trợ giúp .. Tôi đang xây dựng kịch bản cung cấp lược đồ và tôi muốn thêm một số đầu ra tập lệnh và xử lý lỗi. Ý tưởng là cửa sổ đầu ra kịch bản sẽ chỉ hiển thị cho tôi các thông điệp chính mà không có tất cả tiếng ồn.Xử lý lỗi trong Tập lệnh Oracle
Create Temporary Error Table
Begin Transaction
-- begin work block
Print "Doing some types of work"
-- do work here
If Error and Active Transactions > 0 Then Rollback
If Active Transactions = 0 Then Insert Error In Temp Error Table and Start Another Transaction
-- end work block
-- once all all work complete
If Active Transactions > 0 Then Commit Transactions
Trong SQL Server trên thế giới tôi sẽ thường chỉ làm điều này với Red Gate's SQL Packager đã nó đã tìm ra (gợi ý, gợi ý Red Gate - chúng ta cần một phiên bản Oracle :)). Bất kỳ suy nghĩ về nơi để bắt đầu với Oracle để có được một cái gì đó tương tự?
_Tôi đang xây dựng một tập lệnh cung cấp lược đồ_ Nếu bạn có nghĩa là bạn đang tạo/thay đổi các bảng và như vậy; rollback sẽ không giúp ích gì. Trong Oracle, một lệnh DDL cam kết giao dịch hiện tại, nếu một giao dịch xuất sắc, tự chạy trong một giao dịch và cam kết thành công, hãy quay trở lại thất bại. Vì vậy, sau khi chạy lệnh DDL sẽ không có giao dịch chưa thanh toán.Ngoại lệ duy nhất là nếu có lỗi phân tích cú pháp, thì DB không biết rằng nó được cho là chạy lệnh DDL và sẽ không thực hiện cam kết ngầm định đầu tiên, cũng như không bắt đầu giao dịch cho DDL. Điều này rất khác với SQL Server. –
Nhận xét của tôi không cung cấp câu trả lời, nó chỉ ở đó để chỉ ra một sự cố mà bạn có thể hoặc có thể không nhận thức được. –
@Shannon - Cảm ơn, điều đó thực sự khiến bạn không thể thực hiện một giao dịch phạm vi rộng hơn bao gồm DDL. Nó thực sự làm cho lỗi xử lý nhiều khó khăn hơn trong quá trình cung cấp bằng cách để cơ sở dữ liệu trong trạng thái nửa nướng nếu có điều gì đó không ổn. –