-
Không:câu lệnh ghép chỉ có thể được sử dụng trong phần nội dung của các chương trình được lưu trữ.
-
START TRANSACTION;
vàCOMMIT;
là các câu lệnh riêng biệt. Nếu bạn muốn phần nội dung của một chương trình được lưu trữ chứa nhiều câu lệnh, nó sẽ cần phải đặt những câu lệnh đó trong một số loại khối câu lệnh ghép nhưBEGIN ... END
(tương tự như đặt một khối câu lệnh trong dấu ngoặc nhọn{ ... }
trong một ngôn ngữ giống như C).Điều đó nói rằng, bạn có thể có một chương trình được lưu trữ chỉ chứa một câu lệnh duy nhất
START TRANSACTION;
hoặcCOMMIT;
—Cũng như một chương trình sẽ không yêu cầu bất kỳ khối câu lệnh ghép nào và sẽ chỉ bắt đầu một giao dịch mới / cam kết hiện tại tương ứng.Bên ngoài chương trình được lưu trữ, nơi không cho phép các khối câu lệnh ghép, bạn có thể phát hành
START TRANSACTION;
vàCOMMIT;
báo cáo khi được yêu cầu. -
LOOP
cũng là một khối câu lệnh ghép, chỉ hợp lệ trong một thủ tục được lưu trữ. Nó không cần thiết để kèm theo mộtLOOP
khối trong mộtBEGIN ... END
, mặc dù nó là bình thường (vì nếu không, rất khó để thực hiện bất kỳ khởi tạo vòng lặp bắt buộc nào).
Trong trường hợp của bạn, khi bạn muốn chèn dữ liệu vào bảng từ một cấu trúc lặp, bạn sẽ cần:
-
xác định một chương trình được lưu trữ mà bạn sử dụng
LOOP
; -
lặp lại một vòng lặp trong một chương trình bên ngoài thực hiện các truy vấn cơ sở dữ liệu trên mỗi lần lặp; hoặc
-
xác định lại logic của bạn theo các bộ mà SQL có thể trực tiếp hoạt động.