Hiển thị kết quả từ 1 đến 2 / 2

Chủ đề: Raiserror

  1. #1
    Tham gia
    12-11-2002
    Bài viết
    47
    Like
    0
    Thanked 0 Times in 0 Posts

    Buồn quá đi ! Raiserror

    Chào các ban!
    Các bạn cho mình hỏI về cách dung hàm RAISERROR trong SQL.
    Trong SQL mình có tạo ra một procedure:
    Create procedure Test1
    AS
    Select * from Table
    Raiserror (‘Error’,16,1)

    Trong VB minh co goi procedure Test1 nhưng minh lai không bắt được thông báo error!

    Nhưng nếu mình tạo procedure
    Create Procedure Test2
    As
    Raiserror (‘Error’,16,1)
    Select * from table

    Thi VB lạI bắt được thong báo error khi goi hàm Test2.

    Thanks!!
    Quote Quote

  2. #2
    Tham gia
    06-08-2002
    Location
    Phu Yen
    Bài viết
    27
    Like
    0
    Thanked 4 Times in 1 Post

    Hi

    Không biết bạn bắt lỗi bằng cách nào, nếu dùng hàm bắt lỗi gần nhất của VB thì có thể giải thích như sau:

    proc test1
    Câu lệnh select trả về Vb 01 cursor
    câu lệnh thứ hai: raiserror sẽ xảy ra như sau:
    + trả về VB với 01 thông báo lỗi 'Error'
    + Can thiệp không cho Vb nhận cursor do câu lệnh select trả về (cái này tui không chắc lắm chỉ phỏng đoán vậy thôi)

    Như vậy tác dụng thứ hai của câu lệnh raiserror sẽ lại gây ra 01 lỗi tiếp theo cho VB (lỗi này xảy ra sau thông báo 'Error' do VB phát ra khi không nhận được cursor trả về)

    Do vậy cho nên nếu dùng hàm bắt lỗi thì sẽ nhận được lỗi thứ hai.

    proc test2:
    Do câu lệnh raiserror thực thi trước câu lệnh select nên không gây ra lỗi "ngoài mong muốn như proc test1.


    Bạn thủ sửa đổi câu lệnh select trong proc test1 thành câu lệnh update thì VB sẽ nhận được thông báo lỗi mong muốn (do câu lệnh update không trả về dữ liệu)

    Chúc thành công

    PS: Mà thường thì không ai viết procedure mà cấu trúc như proc test1 của bạn: lấy dữ liệu kèm theo thông báo lỗi. Cách thường dùng là khi xảy ra lổi thì quay trở lại, dùng câu lệnh roll back transaction

    Chào bạn

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •