MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Kết hợp sức mạnh của SQL và các câu lệnh thủ tục với Chế độ tương thích Oracle của MariaDB

Quay lại MariaDB Server 10.3, chúng tôi đã thêm một chế độ SQL mới (SQL_MODE =ORACLE) để cung cấp khả năng tương thích với một tập hợp con của Oracle PL / SQL, một phần mở rộng thủ tục cho Ngôn ngữ truy vấn có cấu trúc (SQL). Với bản phát hành gần đây của Máy chủ cộng đồng MariaDB 10.6, chúng tôi đã tiếp tục hành trình mở rộng khả năng tương thích PL / SQL của MariaDB bằng cách thêm một số hàm như ROWNUM() , ADD_MONTHS()TO_CHAR() . Điều này thật tuyệt vì một số lý do nhưng để bắt đầu, MariaDB vẫn là cơ sở dữ liệu duy nhất triển khai khả năng tương thích mã nguồn mở của Oracle nên chức năng này khả dụng cho tất cả mọi người. Để thực sự hiểu điều đó có nghĩa là gì, điều quan trọng là chúng tôi phải lùi lại một chút để bạn biết tại sao chúng tôi đã bắt đầu con đường này để bắt đầu.

Sức mạnh của lập trình theo thủ tục và khai báo

Bằng cách kết hợp sức mạnh thao tác dữ liệu của ngôn ngữ SQL với các khả năng thủ tục, các nhà phát triển có rất nhiều cơ hội mới, thú vị. Sử dụng PL / SQL, các nhà phát triển có khả năng thực thi các câu lệnh SQL tập trung vào cách tiếp cận khai báo về “việc cần làm” đồng thời được cung cấp khả năng kiểm soát luồng hoạt động hoặc “cách thực hiện”.

Chờ đã, cái gì? Được, hãy xem xét truyền thống sau đây Câu lệnh SQL.

SELECT id, name, has_kids FROM friends;

Đơn giản, thanh lịch và hiệu quả. SQL là một ngôn ngữ đẹp, nhưng nó có những hạn chế của nó. Ví dụ:điều gì sẽ xảy ra nếu bạn muốn lặp lại các kết quả trả về từ SELECT thực hiện câu lệnh? Và sau đó, trong khi phân tích kết quả, hãy kiểm tra từng kết quả bằng câu lệnh điều kiện (ví dụ:if has_kids là đúng) để bạn có thể thực hiện các hoạt động cụ thể dựa trên các điều kiện đó?

Ghi chú nhanh :Đây hoàn toàn là giả thuyết. Tôi chắc chắn rằng nếu bạn có bạn với trẻ em và bạn bè không có trẻ em, bạn sẽ đối xử với họ như nhau. Tuy nhiên, vì lợi ích của ví dụ này, giả sử bạn không làm như vậy. ĐƯỢC RỒI? Được rồi, tuyệt.

Nhưng với tất cả các lần lặp lại và điều kiện xảy ra, có thể bạn sẽ gặp lỗi. Sẽ thật tuyệt nếu bạn có thể xử lý lỗi (tức là ngoại lệ) trực tiếp trên phía cơ sở dữ liệu mà không cần phải trả lại kết quả ban đầu về mã ứng dụng sẽ được xử lý trước phải không? Chà, điều đó quá tệ, bởi vì bạn đang sử dụng SQL đơn giản và không có điều nào trong số đó là khả thi.

Đừng sợ! Thay vào đó, hãy cùng tôi đến với thế giới tuyệt vời của PL / SQL!

Thông qua việc sử dụng một thứ được gọi là PL / SQL Block, bạn có thể kết hợp SQL mà bạn biết và yêu thích với các khả năng thủ tục cho phép bạn kiểm soát luồng hoạt động bằng cách sử dụng các tính năng như khả năng khai báo biến, xử lý điều kiện, vòng lặp. thông qua dữ liệu, quản lý các ngoại lệ và hơn thế nữa.

Các khối PL / SQL được xử lý trong Máy chủ MariaDB, nơi các câu lệnh SQL và thủ tục được phân tích cú pháp và thực thi tương ứng.

Khá tuyệt, phải không? Nó trở nên tốt hơn rất nhiều! Nhưng trở lại ví dụ trước của chúng tôi. Bạn có thể sử dụng một khối PL / SQL duy nhất để hoàn thành mọi thứ mà tôi đã chỉ ra trước đây.

Ví dụ:

DELCARE 
	CURSOR c IS SELECT id, name, has_kids FROM friends;
BEGIN 
	FOR friend_row IN c LOOP
		IF friend_row.has_kids == true THEN
			/* Do something */
		ELSE
			/* Do something else */
		END IF;
	END LOOP;
EXCEPTION
	WHEN no_data_found THEN
		/* Handle no data found */
	WHEN others THEN
		/* Handle all other kinds of exceptions */
END;

Tìm hiểu thêm

Công cụ mạnh mẽ, phải không? Chà, bài đăng trên blog này thực sự chỉ là phần nổi của tảng băng chìm. Một chút gì đó để kích thích sự thèm ăn của bạn, nếu bạn muốn. Nhưng nếu bạn muốn biết thêm, tôi thực sự khuyên bạn nên xem hội thảo trên web mà chúng tôi đã trình bày gần đây, MariaDB và PL / SQL:Kết hợp sức mạnh của SQL và các câu lệnh thủ tục. Trong đó, chúng tôi đi sâu vào chi tiết hơn về lý do tại sao chúng tôi thực hiện sứ mệnh của mình là thêm và mở rộng hỗ trợ PL / SQL và chúng tôi bao gồm nhiều ví dụ khác nhau và trình diễn mã hóa trực tiếp, cung cấp cho bạn cái nhìn đầu tiên về cách bạn có thể sử dụng PL / SQL trong MariaDB! Chúc các bạn viết mã vui vẻ!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel:Khóa được chỉ định quá dài; độ dài khóa tối đa là 767 byte

  2. Cách ACOS () hoạt động trong MariaDB

  3. AWS RDS:“SQLSTATE [22001] - Dữ liệu quá dài cho cột” sử dụng MariaDB 10.2

  4. Cách YEARWEEK () hoạt động trong MariaDB

  5. Cách ELT () hoạt động trong MariaDB