Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Tạo, gỡ rối và triển khai các thường trình cho DB2 và Oracle Thomas Sharp ([email protected]) Kiến trúc sư công cụ phần mềm IBM 11 12 2009 Bài viết này mô tả cách bạn có thể sử dụng IBM® Data Studio 2.2 and Optim™ Development Studio 2.2 để phát triển các thường trình sử dụng Oracle PL/SQL. Nó chỉ cho bạn cách tạo, soạn thảo, triển khai và gỡ rối các gói, các thủ tục và các hàm PL/SQL cho các cơ sở dữ liệu sau đây: Phiên bản 9.7 của DB2® for Linux®, UNIX® và Windows®, Oracle 10g và Oracle 11g. Tổng quát Bài viết này cung cấp thông tin về việc sử dụng Optim Development Studio (ODS-Công cụ phát triển Optim) để tạo, soạn thảo, triển khai và gỡ rối các thường trình PL/SQL cho Phiên bản 9.7 của DB2 Linux, UNIX và Windows (LUW), các cơ sở dữ liệu Oracle 10g và Oracle 11g. Giả định bạn có kiến thức cơ bản về DB2 và Oracle và đã quen thuộc với các công việc trong một môi trường phát triển phần mềm dựa trên Eclipse. Khả năng để phát triển, gỡ rối và triển khai khi sử dụng PL/SQL cũng có sẵn trong sản phẩm miễn phí của IBM, Data Studio 2.2. Tuy nhiên, chỉ có Data Studio hỗ trợ phát triển và triển khai dựa vào cơ sở dữ liệu DB2 9.7 trong chế độ tương thích. Để phát triển và triển khai dựa vào cơ sở dữ liệu Oracle, bạn phải sử dụng Optim Development Studio 2.2 hoặc bản phát hành mới hơn. Để thử các khả năng được mô tả trong bài viết này, xem phần Tài nguyên để tải về một bản dùng thử Optim Development Studio hoặc một bản sao sử dụng-đầy đủ của Data Studio. Optim Development Studio là gì? Optim Development Studio (tên mới của IBM cho Data Studio Developer) cung cấp một môi trường phát triển tích hợp dựa trên Eclipse để tăng tốc độ phát triển ở giữa dữ liệu, nhắm vào các cơ sở dữ liệu DB2, Informix và Oracle. Ngoài các khả năng quản lý cơ sở dữ liệu cơ bản và năng lực phát triển các thường trình cơ sở dữ liệu, Optim Development Studio đưa việc phát triển cơ sở dữ liệu lên mức độ tiếp theo với các khả © Copyright IBM Corporation 2009 Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Nhẫn hiệu đăng ký Trang 1 của 56 developerWorks® ibm.com/developerWorks/vn/ năng nâng cao của nó để phát triển và tối ưu hóa các ứng dụng cơ sở dữ liệu Java đối với các cơ sở dữ liệu không đồng nhất. Để biết thêm thông tin về sự hỗ trợ phát triển Java, hãy xem các trang sản phẩm Optim Development Studio và Trung tâm thông tin quản lý dữ liệu tích hợp (Integrated Data Management Information Center), từ phần Tài nguyên của bài viết này có thể liên kết đến cả hai trang đó. Trong phiên bản trước của Optim Development Studio, bạn có thể phát triển cả các ứng dụng phía máy khách trong Java và cả logic nghiệp vụ phía máy chủ trong Java hoặc SQL khi sử dụng các trình thủ thuật tiên tiến, các trình soạn thảo, các công cụ triển khai và các trình gỡ rối. Phiên bản 2.2 cũng hỗ trợ logic nghiệp vụ phía máy chủ trong PL/SQL. Nó cho phép bạn quản lý các đối tượng PL/SQL trong Data Source Explorer (Trình thám hiểm nguồn dữ liệu) và phát triển các gói, các thủ tục và các hàm PL/SQL trong Data Project Explorer (Trình thám hiểm dự án dữ liệu). Do Optim Development Studio 2.2 dựa trên Eclipse 3.4.2, bạn có thể cài đặt nó trong cùng một "vỏ" Eclipse với các sản phẩm khác dựa trên Eclipse 3.4.2. PL/SQL là gì? PL/SQL là sự mở rộng ngôn ngữ thủ tục của Oracle cho SQL. Giống như SQL bản địa cho DB2, PL/ SQL là một phương ngữ của SQL cung cấp các cấu trúc 3GL để triển khai thực hiện logic chạy trên máy chủ cơ sở dữ liệu. Bạn có thể sử dụng PL/SQL để tạo các thường trình (các thủ tục và các hàm) và để tạo các gói PL/ SQL có chứa các định nghĩa kiểu dữ liệu, các khai báo biến, các thủ tục và các hàm. Một thường trình PL/SQL có thể làm quá tải thường trình khác cùng kiểu (thủ tục hoặc hàm) chỉ khi cả hai ở trong cùng một gói PL/SQL. Nội dung của gói PL/SQL được soạn thảo cùng nhau, được triển khai cùng nhau và được gỡ rối cùng nhau. Chúng được quản lý như một đơn vị trên máy chủ cơ sở dữ liệu và được sửa đổi theo tên của gói PL/SQL và lược đồ của nó. Một gói PL/SQL có hai phần: • Đặc tả xác định các thường trình và khai báo ngoại lệ. • Phần thân bao gồm các khai báo biến và con trỏ, các phần thân của các thường trình của nó và phần khởi tạo tùy chọn. Đặc tả này là một khai báo công khai của các giao diện; phần thân là sự thực hiện riêng của nó. Làm rõ nghĩa thuật ngữ gói (package) Không nên nhầm lẫn một gói PL/SQL với một gói DB2 (SQL). Một gói DB2 là một đối tượng cơ sở dữ liệu. Đây là kết quả của sự ràng buộc một ứng dụng SQL hoặc thường trình để chứa đựng các câu lệnh SQL tĩnh và kế hoạch truy cập dữ liệu của DB2. Một gói PL/SQL là một cấu trúc lập trình. Nó là một thùng chứa của các câu lệnh PL/SQL. Khi bạn triển khai một gói PL/SQL trên DB2 LUW 9.7, DB2 biên dịch nó thành một mô-đun DB2, mô-đun này là một đối tượng SQL riêng tương tự như một gói PL/SQL. Giống như một gói PL/ SQL, một mô-đun DB2 chứa các điều kiện, các hàm, các thủ tục, các kiểu do người dùng định Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 2 của 56 ibm.com/developerWorks/vn/ developerWorks® nghĩa và các biến. Không giống như một gói PL/SQL, một mô-đun DB2 theo logic chỉ chứa các phần tử của nó. Nó không có tệp nguồn xác định nội dung của nó. Thay vào đó, sau khi bạn tạo ra một mô-đun DB2, bạn viết một chuỗi các câu lệnh ALTER để thêm các phần tử vào nó. Để tạo một mô-đun DB2, bạn có thể sử dụng trình soạn đối tượng dữ liệu (Data Object) từ Object Editor Explorer hoặc bạn có thể gõ các câu lệnh CREATE và ALTER trong một kịch bản lệnh SQL trong dự án của bạn và sau đó chạy kịch bản lệnh đó. Tóm tắt chức năng PL/SQL Hỗ trợ các mô-đun DB2 và PL/SQL cho DB2 LUW 9.7. Nó cũng hỗ trợ PL/SQL cho Oracle 10g và 11g. Để làm việc với PL/SQL, hãy sử dụng phối cảnh dữ liệu ODS. Bảng 1. Chức năng PL/SQL mới Xem—Kiểu kết nối Chức năng mới Trình thám hiểm nguồn dữ liệu — DB2 LUW 9.7 • Hiển thị một gói PL/SQL trong thư mục PL/SQL Packages của một lược đồ. Các gói này không mở rộng để hiển thị nội dung của chúng. • Hiển thị một thủ tục hoặc hàm PL/SQL trong thư mục của một lược đồ. • Xem một gói, thủ tục hoặc hàm PL/SQL trong khung nhìn Properties. • So sánh hai đối tượng PL/SQL cùng kiểu. • Chạy một thủ tục hoặc hàm PL/SQL, dù nó là độc lập hay trong một gói PL/SQL và xem các kết quả của nó trong khung nhìn SQL Results. Trình thám hiểm nguồn dữ liệu — Oracle 10g hoặc 11g • Hiển thị một gói PL/SQL trong thư mục PL/SQL Packages của một lược đồ. Các gói này không mở rộng để hiển thị nội dung của chúng. • Hiển thị một thủ tục hoặc hàm PL/SQL trong thư mục của một lược đồ. • Xem một gói, thủ tục hoặc hàm PL/SQL trong khung nhìn Properties. • So sánh hai đối tượng PL/SQL cùng kiểu. • Chạy một thủ tục hoặc hàm PL/SQL, dù nó là độc lập hay trong một gói PL/SQL và xem các kết quả của nó trong khung nhìn SQL Results. Trình thám hiểm dự án dữ liệu — DB2 LUW 9.7 • • • • • • • • • Trình thám hiểm dự án dữ liệu — Oracle 10g hoặc 11g Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Tạo một gói PL/SQL. Tạo một thủ tục PL/SQL độc lập. Tạo một hàm PL/SQL độc lập. Triển khai các đối tượng PL/SQL trong một thư mục. Thử nghiệm một thủ tục hoặc hàm PL/SQL bằng cách chạy nó và xem các kết quả của nó trong khung nhìn SQL Results. Gỡ rối một thủ tục hoặc hàm trong một gói PL/SQL. Gỡ rối một thủ tục PL/SQL độc lập. Kéo hoặc sao chép một gói hoặc thường trình PL/SQL từ một kết nối Oracle hoặc DB2 trong Data Source Explorer vào dự án của bạn. Kéo hoặc sao chép một gói hoặc thường trình PL/SQL từ một dự án vào trong một dự án khác. Tạo một gói PL/SQL. Tạo một thủ tục PL/SQL độc lập. Tạo một hàm PL/SQL độc lập. Triển khai các đối tượng PL/SQL trong một thư mục. Thử nghiệm một thủ tục hoặc hàm PL/SQL bằng cách chạy nó và xem các kết quả của nó trong khung nhìn SQL Results. • Gỡ rối một thủ tục hoặc hàm trong một gói PL/SQL. • Gỡ rối một thủ tục PL/SQL độc lập. • • • • • Trang 3 của 56 developerWorks® ibm.com/developerWorks/vn/ • Kéo hoặc sao chép một gói hoặc thường trình PL/SQL từ một kết nối Oracle trong Data Source Explorer vào dự án của bạn. • Kéo hoặc sao chép một gói hoặc thường trình PL/SQL từ một dự án vào trong một dự án khác. Khung nhìn kết quả SQL (SQL Results) • Xem các đầu vào tham số, các đầu ra tham số và trả về các tập kết quả sau khi chạy thành công hay gỡ rối một thường trình PL/ SQL. • Xem thông báo lỗi sau khi triển khai, chạy, gỡ rối hoặc loại bỏ không thành công một đối tượng từ cơ sở dữ liệu. Trình soạn thảo gói PL/SQL • Soạn thảo đặc tả trong tab Specification. • Mô tả hoặc đổi tên gói PL/SQL để cập nhật nó trong Data Project Explorer. • Soạn thảo phần thân trong tab Body. Trình soạn thảo thủ tục PL/SQL • Soạn thảo mã nguồn trong tab Source. • Mô tả hoặc đổi tên thủ tục để cập nhật nó trong Data Project Explorer. • Soạn thảo các thuộc tính mô hình trong tab Source. Trình soạn thảo hàm PL/SQL • Soạn thảo mã nguồn trong tab Source. • Mô tả hoặc đổi tên hàm để cập nhật nó trong Data Project Explorer. • Soạn thảo các thuộc tính mô hình trong tab Configuration. Kết nối tới một cơ sở dữ liệu tương thích PL/SQL trong DB2 LUW 9.7 Để tạo một cơ sở dữ liệu có tên là cdbname với tính tương thích PL/SQL, hãy nhập các câu lệnh sau trong một cửa sổ lệnh DB2: DB2SET DB2_COMPATIBILITY_VECTOR=FFF DB2STOP && DB2START DB2 CREATE DATABASE cdbname Đối với cơ sở dữ liệu cdbname, DB2 hỗ trợ các kiểu dữ liệu PL/SQL-cụ thể. Nếu bạn kết nối cơ sở dữ liệu cdbname với cửa sổ lệnh DB2 và nhận được cấu hình cơ sở dữ liệu, bạn có thể xác nhận rằng các giá trị cài đặt tương thích sau đang có bằng cách sử dụng các lệnh sau đây (trên Linux sử dụng grep thay cho findstr): DB2 CONNECT TO cdbname DB2 GET DB CFG | findstr compatibility Number compatibility Varchar2 compatibility Date compatibility DB2 DISCONNECT cdbname = ON = ON = ON Phím tắt của trình đơn hiện lên Trong hầu hết trường hợp, bạn có thể sử dụng phím tắt Shift+F10 để nhìn thấy trình đơn hiện lên cho khung nhìn hiện tại hoặc lựa chọn. Điều này có thể được sử dụng như là một sự thay thế cho việc nhấn chuột phải. Để tạo một Hiện trạng kết nối cơ sở dữ liệu cho cơ sở dữ liệu mẫu GSDB có trong DB2 LUW 9.7, hãy làm như sau: 1. Từ Data Source Explorer, nhấn vào nút thanh công cụ Hiện trạng kết nối mới (New Connection Profile): Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 4 của 56 ibm.com/developerWorks/vn/ developerWorks® Hoặc, nhấn chuột phải vào thư mục Các kết nối cơ sở dữ liệu (Database Connections) và chọn New... từ trình đơn bật lên. Cái nào trong các hành động này cũng làm cho trình thủ thuật kết nối mới (New Connection) xuất hiện, như trong Hình 1. Hình 1. Tạo một kết nối đến GSDB trên DB2 9.7 2. Chọn DB2 for Linux, UNIX, and Windows cho trình quản lý cơ sở dữ liệu của bạn. 3. Chọn trình điều khiển IBM Data Server Driver for JDBC and SQLJ (JDBC 4.0) Default và chỉ định tên cơ sở dữ liệu của bạn, tên máy chủ lưu trữ, số cổng kết nối, tên người dùng và mật khẩu người dùng. Định nghĩa trình điều khiển cho trình điều khiển IBM JDBC được định sẵn và các tệp JAR của nó được đóng gói chung với ODS 2.2. 4. Nhấn vào Kết thúc (Finish). Hiện trạng kết nối xuất hiện trong Data Source Explorer, như trong Hình 2. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 5 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 2. Duyệt hiện trạng kết nối DB2-GSDB mới trong Data Source Explorer Chú ý rằng hiện trạng kết nối DB2-GSDB thể hiện trong Hình 2 được tiếp tục theo một kết nối có tên GSDB [DB2 Alias]. Nếu bạn đã cài đặt một máy khách DB2 và đã bổ sung một bí danh cơ sở dữ liệu DB2 bằng cách tạo ra cơ sở dữ liệu tại chỗ hay sử dụng Trợ giúp cấu hình (Configuration Assistant), thì bí danh cơ sở dữ liệu tự động xuất hiện trong Data Source Explorer khi bạn tạo hoặc mở một vùng làm việc. Vì phiên bản cơ sở dữ liệu bị ẩn đi đối với người sử dụng các bí danh DB2, cấu hình bí danh được giả định là một kết nối tới DB2 LUW 9.1. Như vậy, ODS 2.2 không hiển thị cho bạn các thư mục hoặc hành động PL/SQL khi bạn tạo một dự án phát triển dữ liệu có liên kết với nó. Tuy nhiên, khi bạn chỉ định một ID và mật khẩu của người dùng có thẩm quyền cho cấu hình này và kết nối tới cơ sở dữ liệu, ODS 2.2 phát hiện ra nền tảng và phiên bản DB2 thực tế. Nếu nền tảng và phiên bản thực tế là DB2 LUW và 9.7, sau đó ODS 2.2 cho bạn thấy các thư mục và các hành động PL/SQL. Khi lần đầu tiên bạn cố gắng kết nối đến một bí danh DB2, ODS 2.2 sẽ nhắc bạn nhập một tên và mật khẩu người dùng, như trong Hình 3. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 6 của 56 ibm.com/developerWorks/vn/ developerWorks® Hình 3. Nhập tên và mật khẩu người dùng để kết nối Kết nối đến Oracle 10g hoặc 11g ODS không đóng gói một trình điều khiển JDBC để kết nối với một máy chủ cơ sở dữ liệu Oracle. Vì thế, trước tiên bạn phải lấy được một trình điều khiển JDBC để hỗ trợ Oracle từ Oracle hoặc DataDirect. Các trình điều khiển JDBC này là các sản phẩm lập trình được cấp phép mà bạn phải trả tiền hoặc sử dụng có giấy phép. Là một nhà phát triển của Oracle, bạn có thể đăng ký vào trang Web mạng công nghệ của Oracle, chấp nhận Hiệp định cấp phép phân phối và phát triển OTN và tải một trình điều khiển Oracle JDBC. Xem Tài nguyên để có một liên kết tới trang tải về trình điều khiển Oracle JDBC. Oracle cung cấp các trình điều khiển JDBC mỏng và các trình điều khiển JDBC của Giao diện gọi Oracle (Oracle Call Interface-OCI). Các trình điều khiển OCI yêu cầu một máy khách Cơ sở dữ liệu Oracle (hoặc bạn có thể tải các thư viện cần thiết tương đương). Kết nối đến Oracle bằng cách sử dụng một trình điều khiển JDBC mỏng của Oracle Oracle đã cung cấp một trình điều khiển JDBC mỏng mới cho các mức JRE từ 1.1.1. Bạn luôn luôn phải sử dụng trình điều khiển mới nhất cho các JRE có sẵn. Hiện nay, JRE mới nhất là 1.6 và JAR của nó là ojdbc6.jar. Phiên bản Eclipse mà ODS 2.2 mở rộng được xây dựng trên JRE 1.6. Thực hiện theo các bước sau để kết nối với Oracle khi sử dụng trình điều khiển JDBC mỏng của Oracle: Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 7 của 56 developerWorks® ibm.com/developerWorks/vn/ 1. Lấy về tệp Ojdbc6.jar và sao chép nó vào ổ cứng của bạn trong một thư mục như là C: \jdbcDrivers\Oracle. 2. Trong Data Source Explorer, nhấn chuột phải vào thư mục Các kết nối cơ sở dữ liệu (Database Connections) và chọn New... từ trình đơn hiện lên. 3. Trình thủ thuật New Connection sẽ xuất hiện như trong Hình 4. Hình 4. Chọn một trình điều khiển JDBC mỏng của Oracle Ở đây bạn phải lựa chọn Oracle cho trình quản lý cơ sở dữ liệu và bạn có thể chọn một trong các trình điều khiển mỏng, như Oracle 11 - Oracle Thin Driver Default. Điền vào các thuộc tính chung để nhận biết máy chủ cơ sở dữ liệu Oracle của bạn. 4. Nhấn vào biểu tượng Soạn thảo danh sách Jar... (Edit Jar List...) bên phải của trình điều khiển JDBC: Hộp thoại Edit Jar List xuất hiện, như trong Hình 5. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 8 của 56 ibm.com/developerWorks/vn/ developerWorks® Hình 5. Xác định vị trí ojdbc6.jar Theo mặc định tệp Ojdbc6.jar được liệt kê là một trình giữ chỗ (place-holder), bạn cần phải xác định đường dẫn đầy đủ của nó (ví dụ: C:\jdbcDrivers\Oracle\ojdbc6.jar). 5. Chọn trình giữ chỗ và nhấn vào Edit JAR/Zip... (Soạn thảo JAR/ZIP...). Một hộp thoại phần tệp xuất hiện. 6. Chuyển hướng đến bản sao ojdbc6.jar của bạn, chọn nó và nhấn Open (Mở). Đường dẫn xuất hiện trong hộp thoại Edit Jar List. 7. Nhấn OK. 8. Quay lại trình thủ thuật New Connection, nhấn vào Test Connection (Kiểm tra kết nối). Một thông báo xác nhận sẽ xuất hiện, như trong Hình 6. Hình 6. Chấp nhận xác nhận kết nối 9. Nhấn OK. 10. Nhấn Finish. Hiện trạng kết nối xuất hiện trong Data Source Explorer, như trong Hình 7. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 9 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 7. Duyệt hiện trạng kết nối mới của Oracle trong Data Source Explorer Kết nối Oracle bằng cách sử dụng trình điều khiển JDBC kết nối của DataDirect Thực hiện theo các bước sau để kết nối đến Oracle khi sử dụng trình điều khiển JDBC kết nối của DataDirect: 1. Hãy lấy về trình điều khiển JDBC kết nối đầy đủ của DataDirect hoặc trình điều khiển JDBC 4.0 kết nối của DataDirect cho riêng Oracle. 2. Nếu bạn có trình điều khiển JDBC 3.7 kết nối đầy đủ của DataDirect: a. Giải nén tệp connectjdbc.jar vào một thư mục mới tên là installdd. Tệp này sẽ cho bạn một giấy phép 15 ngày. Lưu ý: Không tìm cách gia hạn giấy phép khi sử dụng LicenseTool.jar trong thư mục cài đặt. Các nỗ lực như vậy sẽ không thành công và làm hỏng. b. Từ thư mục installdd, chạy Trình cài đặt (Installer) và chọn một thư mục mà bạn muốn cài đặt trình điều khiển ở đó (ví dụ: thư mục C:\jdbcDrivers\Oracle\datadirect). 3. Nếu bạn có trình điều khiển JDBC kết nối của DataDirect chỉ cho Oracle, bạn có thể sử dụng tệp oracle.jar "như hiện tại" phụ thuộc vào các điều khoản sử dụng tùy theo giấy phép của bạn. 4. Trong ODS, mở Window -> Preferences và chọn Data Management -> Connectivity -> Driver Definitions. 5. Nhấn Add... 6. Các bảng sau đây cung cấp chi tiết về cách điền vào các trường trên hộp thoại New Driver Definition (Định nghĩa trình điều khiển mới), tùy theo cơ sở dữ liệu và trình điều khiển Oracle nào mà bạn đang sử dụng. Tên/Kiểu: Oracle 10 Oracle 11 Bộ lọc Kiểu trình điều khiển Cơ sở dữ liệu Cơ sở dữ liệu Bộ lọc nhà cung cấp Oracle Oracle Các khuôn mẫu của trình điều khiển có sẵn Trình điều khiển khác / Oracle / 10 Trình điều khiển khác / Oracle / 11 Tên trình điều khiển Kết nối DataDirect cho Oracle 10 Kết nối DataDirect cho Oracle 11 Kiểu trình điều khiển Trình điều khiển khác Trình điều khiển khác Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 10 của 56 ibm.com/developerWorks/vn/ developerWorks® Các tệp trình điều khiển danh sách Jar: Trình điều khiển DataDirect Connect 3.7 đầy đủ C:\jdbcDrivers\Oracle\datadirect\lib\base.jar C:\jdbcDrivers\Oracle\datadirect\lib\util.jar C:\jdbcDrivers\Oracle\datadirect\lib\oracle.jar Trình điều khiển cho riêng Oracle (4.0) C:\jdbcDrivers\Oracle\datadirect\oracle.jar Các đặc tính: Oracle 10 Oracle 11 Danh mục TẤT CẢ (ALL) TẤT CẢ (ALL) URL kết nối jdbc:datadirect:oracle:// habu.svl .ibm.com:1521;SID=ora10g jdbc:datadirect:oracle:// chex.svl .ibm.com:1521;SID=ORA11 Tên cơ sở dữ liệu oracle oracle Lớp trình điều khiển com.ddtek.jdbc.oracle.OracleDriver com.ddtek.jdbc.oracle.OracleDriver CRIOLLO1 CRIOLLO1 Mật khẩu (tùy chọn) Mã nhận dạng người dùng (tùy chọn) Lưu ý: Bạn có thể đặt SID hoặc vào URL kết nối, như ở trên, hoặc thêm nó vào như là một thuộc tính bổ sung trên tab Optional. 7. Sau khi bạn thực hiện tốt (OK) mọi thứ, bạn có thể tạo một hồ sơ kết nối mới với Oracle bằng cách sử dụng định nghĩa trình điều khiển này từ Data Source Explorer khi sử dụng Trình thủ thuật New Connection. Các khung nhìn danh mục Oracle Khi bạn tạo một kết nối của Oracle, bạn có thể chọn một trong ba khung nhìn danh mục để lọc những gì bạn nhìn thấy trong Data Source Explorer của chủ sở hữu: All Khung nhìn này mô tả tất cả các đối tượng có thể truy cập đến bạn. DBA Khung nhìn này mô tả tất cả các đối tượng trong cơ sở dữ liệu. User Khung nhìn này mô tả các đối tượng mà bạn sở hữu. Duyệt cơ sở dữ liệu và các đối tượng của bạn Sau khi bạn tạo một kết nối cơ sở dữ liệu, hiện trạng kết nối của nó xuất hiện trong Data Source Explorer. Mở rộng kết nối DB2 đến GSDB để xem các thư mục chính của nó. Hầu hết các thông tin mà bạn quan tâm có trong thư mục Các lược đồ (Schemas). Mở rộng thư mục Schemas, cuộn để di chuyển đến tên lược đồ mặc định của bạn và mở rộng lược đồ đó để xem các thư mục của nó, như trong Hình 8. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 11 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 8. Mở rộng kết nối DB2 của bạn để xem các thư mục trong lược đồ GOSALES Mở rộng kết nối Oracle của bạn để xem các thư mục chính của nó. Mở rộng thư mục Schemas, cuộn để di chuyển đến tên lược đồ mặc định của bạn và mở rộng lược đồ đó để xem các thư mục của nó, như trong Hình 9. Hình 9. Mở rộng kết nối Oracle của bạn để xem các thư mục trong lược đồ CRIOLO1 Bạn có thể tìm thấy các đối tượng hiện có trong các thư mục của chúng. Khi bạn chọn một đối tượng hiện có, bạn có thể xem các thuộc tính của nó trong khung nhìn Properties. Tab General trong khung nhìn Properties nhận biết đối tượng, như trong Hình 10. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 12 của 56 ibm.com/developerWorks/vn/ developerWorks® Hình 10. Duyệt các thuộc tính chung của một thủ tục lưu sẵn Từ quan điểm của Oracle, ngôn ngữ thực hiện cho thủ tục PL/SQL là SQL, chứ không phải là PL/ SQL. ODS 2.2 phân biệt giữa SQL và PL/SQL cho các mục đích phát triển. Tab Các tham số (Parameters) cho thấy các tham số đầu vào và đầu ra, như trong Hình 11. Hình 11. Duyệt các tham số của một thủ tục lưu sẵn Tab Nguồn (Source) cho thấy thủ tục này chỉ ra câu lệnh CREATE, như trong Hình 12. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 13 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 12. Duyệt mã nguồn của một thủ tục lưu sẵn Làm việc ngoại tuyến Phối cảnh Dữ liệu (Data) được thiết kế để giúp bạn làm việc với các cơ sở dữ liệu của bạn; tuy nhiên, bạn vẫn có thể làm một số công việc khi bạn đang đi du lịch hoặc mạng bị ngắt. Cách làm này được gọi là làm việc ngoại tuyến. Để lưu trữ trong bộ nhớ truy cập nhanh các thông tin danh mục cơ sở dữ liệu trong vùng làm việc của bạn để làm việc ngoại tuyến, hãy chọn những hành động này từ trình đơn hiện lên bằng cách nhấn chuột phải trên hiện trạng kết nối: 1. Kết nối. 2. Lưu trữ ngoại tuyến. 3. Ngắt kết nối. 4. Làm việc ngoại tuyến. Bạn có thể biết bạn đang làm việc ngoại tuyến hay không khi trình đơn hiện lên về hiện trạng kết nối cho phép bạn kết nối hoặc ngắt kết nối, nhưng không cho phép bạn làm việc ngoại tuyến hoặc lưu trữ ngoại tuyến. Khi bạn đang làm việc ngoại tuyến, bạn có thể: • Mở rộng cơ sở dữ liệu để xem tất cả các đối tượng trong lược đồ của bạn và các thuộc tính của chúng. • Tạo một dự án phát triển dữ liệu cho kết nối cơ sở dữ liệu đó. • Kéo và thả (hoặc sao chép và dán) các gói và các thường trình PL/SQL từ Data Source Explorer tới dự án của bạn trong Data Project Explorer. • Tạo các gói và các thường trình PL/SQL mới trong dự án của bạn. • Soạn thảo các đối tượng trong dự án của bạn. Tuy nhiên, nếu bạn chọn một hành động trong dự án có yêu cầu một kết nối, như Chạy (Run) hoặc Triển khai (Deploy), bạn có thể được nhắc tạo kết nối. Nếu bạn không chọn, thì hành động sẽ không hoàn thành. Như bạn có thể nhìn thấy trong câu lệnh CREATE ở trên, thủ tục TEST_NUMERIC nhận một số thập phân DECIMAL và số NUMERIC và trả về các giá trị này được tăng thêm 1. Bằng cách so sánh mã nguồn với các tham số, bạn cũng có thể thấy rằng mặc dù kiểu dữ liệu tham số VAR01 được định nghĩa là DECIMAL, những máy chủ cơ sở dữ liệu Oracle đã chuẩn hoá số thập phân này thành NUMBER. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 14 của 56 ibm.com/developerWorks/vn/ developerWorks® Một NUMBER của Oracle có thể là một giá trị số nguyên, dấu phẩy động hoặc thập phân tùy thuộc vào độ chính xác và thang đo tùy chọn của nó. Phát triển các đối tượng PL/SQL với Oracle Các quá trình phát triển các gói và các thường trình PL/SQL với Optim Development Studio tương tự như các quá trình phát triển các gói và các thường trình DB2. Do Optim Development Studio 2.2 hỗ trợ PL/SQL cho cả Oracle và cả DB2, nên bạn có thể dễ dàng chuyển giao công việc từ Oracle đến DB2 bằng cách kéo các đối tượng từ một dự án của Oracle trong Data Project Explorer hay từ một cơ sở dữ liệu Oracle trong Data Source Explorer, sang một dự án DB2 trong Data Project Explorer. Tạo một dự án phát triển dữ liệu Oracle Một dự án phát triển dữ liệu có chứa một tập các kịch bản lệnh SQL, các thường trình và các nguồn tài nguyên liên quan đến XML, được liên kết với một và chỉ một hiện trạng kết nối cơ sở dữ liệu trong Data Source Explorer. Một dự án phát triển dữ liệu có liên kết với một hiện trạng kết nối DB2 LUW 9.7 được gọi là dự án DB2 và một dự án phát triển dữ liệu có liên kết với một hiện trạng kết nối Oracle 10g hoặc 11g được gọi là một dự án của Oracle. Thực hiện theo các bước sau để tạo ra một dự án phát triển dữ liệu trong Data Project Explorer: 1. Nhấn chuột phải vào một phần trống trên nền Data Project Explorer để mở một trình đơn hiện lên. Chọn New -> Data Development Project, như trong Hình 13. Hình 13. Khởi chạy một trình thủ thuật để tạo ra một dự án phát triển dữ liệu mới Trình đơn này chỉ xuất hiện khi bạn nhấn vào trong vùng trống trong khi không có gì trong khung nhìn được chọn. 2. Trang Dự án phát triển (Development Project) của trình thủ thuật xuất hiện. Nhập tên cho dự án, như trong Hình 14 và nhấn Next >. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 15 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 14. Nhập tên cho dự án phát triển dữ liệu của bạn 3. Từ trang Chọn kết nối (Select Connection), chọn một kết nối của Oracle hiện có, như trong Hình 15 hoặc tạo một kết nối mới. Hình 15. Chọn một hiện trạng kết nối cho dự án phát triển dữ liệu của bạn 4. Nhấn Finish. Bây giờ dự án này xuất hiện trong Data Project Explorer. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 16 của 56 ibm.com/developerWorks/vn/ developerWorks® 5. Mở rộng dự án này. Hình 16 cho thấy một ví dụ về một dự án Oracle. Hình 16. Mở rộng các thư mục của dự án Oracle của bạn Mỗi thư mục chứa các tài nguyên của chỉ một kiểu. Bạn có thể nhấn chuột phải vào thư mục bất kỳ và sử dụng trình đơn hiện lên để gọi một trình thủ thuật, cho phép bạn tạo ra một nguồn tài nguyên của kiểu đó có chứa trong thư mục này. Mỗi hành động New trên một thư mục trong một dự án phát triển dữ liệu sẽ mở một trình thủ thuật để tạo một đối tượng kiểu ngầm định theo tên thư mục. Tạo một thủ tục PL/SQL cho Oracle Thực hiện các bước sau để sử dụng một trình thủ thuật Thủ tục lưu sẵn mới (New Stored Procedure), tạo một thủ tục PL/SQL: 1. Nhấn chuột phải vào thư mục Thủ tục lưu sẵn (Stored Procedures) của dự án phát triển Oracle. Từ trình đơn thả xuống, chọn New -> Stored Procedure. Trình thủ thuật New Stored Procedure xuất hiện, như trong Hình 17. Hình 17. Đặt tên cho một thủ tục PL/SQL với Oracle Đối với Oracle, PL/SQL là ngôn ngữ hỗ trợ duy nhất, vì thế trường Ngôn ngữ (Language) bị vô hiệu hoá. 2. Theo mặc định, giá trị cho trường Dự án (Project) là dự án có chứa sự lựa chọn của bạn. Bạn cũng có thể chọn một dự án đích khác cho thủ tục mới này hoặc sử dụng nút New... để tạo ra một dự án đích khác. 3. Nhập tên cho thủ tục đó. Bạn có thể mô tả tên này với một chủ sở hữu (ví dụ, CRIOLLO1.TESTPROCEDURE). Bạn cũng có thể phân định tên thủ tục cụ thể là các ký tự chữ thường và cho phép các khoảng trống và các ký tự đặc biệt (ví dụ, Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 17 của 56 developerWorks® ibm.com/developerWorks/vn/ Đối với Oracle, tên này (không có chủ sở hữu) có thể dài đến 30 ký tự. 4. Nhấn Next > để hiển thị trang Parameters, như trong Hình 18. CRIOLLO1."Test.Procedure"). Hình 18. Thêm các tham số cho một thủ tục PL/SQL với Oracle Sử dụng Add... và hộp thoại Parameters để thêm các tham số của kiểu dữ liệu được hỗ trợ bất kỳ. Về một danh sách các kiểu dữ liệu được hỗ trợ, xem Phụ lục A. Đối với Oracle, bạn không thể xác định các độ dài, các độ chính xác hoặc các thang đo cho một kiểu dữ liệu được tham số hóa. Oracle không cho phép các giá trị này trong các khai báo tham số (hoặc trong khai báo kiểu trả về cho một hàm). Thay vào đó, Oracle cho phép các độ dài, các độ chính xác hoặc các thang đo tối đa cho các kiểu dữ liệu này. Các biến được khai báo trong một thường trình PL/SQL có thể gồm các độ dài, các độ chính xác hoặc các thang đo. Bạn có thể thêm chúng trong trình soạn thảo thường trình. 5. Khi bạn hoàn tất việc thêm các tham số, nhấn Next > để đến trang Tóm tắt (Summary). 6. Nhấn Show SQL để xem mã PL/SQL sẽ được tạo ra, như trong Hình 19. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 18 của 56 ibm.com/developerWorks/vn/ developerWorks® Hình 19. Kiểm tra mã PL/SQL đã tạo ra cho một thủ tục của Oracle 7. Nhấn Finish để tạo thủ tục, thêm nó vào dự án của bạn và mở nó trong trình soạn thảo thường trình. 8. Kiểm tra thủ tục mới trong trình soạn thảo thường trình. Trước khi có thể triển khai thủ tục này, bạn cần phải thêm mã vào phần thân của nó. Việc tăng cường khả năng thử nghiệm và đơn giản là để thay đổi VAR01 thành một tham số đầu ra và để gán một giá trị cho nó, như sau: CREATE OR REPLACE PROCEDURE PROCEDURE1 ( VAR01 OUT INT ) AS BEGIN VAR01 := 2020; END; Tạo một hàm PL/SQL với Oracle Thực hiện theo các bước sau để sử dụng trình thủ thuật Hàm mới do người dùng định nghĩa (New User-Defined Function) để tạo một hàm PL/SQL: 1. Nhấn chuột phải vào thư mục Các hàm do người dùng định nghĩa (User-Defined Functions) trong dự án phát triển dữ liệu Oracle của bạn. Từ trình đơn hiện lên, chọn New -> UserDefined Function. Trình thủ thuật New User-Defined Function xuất hiện, như trong Hình 20. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 19 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 20. Đặt tên hàm PL/SQL mới với Oracle Đối với Oracle, PL/SQL là ngôn ngữ hỗ trợ duy nhất, vì thể trường Language bị vô hiệu hóa. 2. Nhấn Next > để hiển thị trang câu lệnh hoặc biểu thức SQL (SQL Statement or Expression), như trong Hình 21. Hình 21. Chỉ định một câu lệnh hay biểu thức cho một hàm Oracle Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 20 của 56 ibm.com/developerWorks/vn/ developerWorks® Từ trang này, bạn có thể nhập một biểu thức được hàm này trả về. Theo tùy chọn, bạn có thể không nhập vào một biểu thức ở đây và thay đổi nó sau này trong trình soạn thảo thường trình. Đối với PL/SQL, ODS 2.2 không hỗ trợ các hàm bảng. Một hàm PL/SQL phải có một kết quả vô hướng. 3. Nhấn Next > để hiển thị trang Kiểu dữ liệu trả về (Return Data Type), như trong Hình 22. Hình 22. Chỉ định kiểu trả về của hàm với Oracle Đối với Oracle, bạn không thể xác định độ dài, độ chính xác hoặc thang đo cho một kiểu dữ liệu trả về. Oracle không cho phép các giá trị này trong các khai báo kiểu trả về. Thay vào đó, Oracle cho phép độ dài, độ chính xác hoặc thang đo tối đa cho kiểu dữ liệu được trả về. 4. Nhấn Next > để hiển thị trang Parameters, như trong Hình 23. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 21 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 23. Các tham số cho một hàm PL/SQL với Oracle Sử dụng Add... và hộp thoại Parameters để thêm các tham số của bất kì kiểu dữ liệu được hỗ trợ nào. 5. Khi bạn hoàn tất việc thêm các thông số, nhấn Next > để đến trang Summary. 6. Nhấn Show SQL để xem mã PL/SQL sẽ được tạo, như trong Hình 24. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 22 của 56 ibm.com/developerWorks/vn/ developerWorks® Hình 24. Kiểm tra mã PL/SQL được tạo cho một hàm Oracle ODS 2.2 không xác định kiểu dữ liệu của biểu thức và nó có thể không tự động xác định kiểu trả về. Mã được tạo ra sẽ không hoạt động nếu không có sửa đổi, nếu bạn thay đổi biểu thức SQL hoặc kiểu dữ liệu trả về sao cho chúng không tương ứng. 7. Nhấn Finish để tạo ra hàm này, thêm nó vào dự án của bạn và mở nó trong trình soạn thảo thường trình. 8. Kiểm tra hàm mới trong trình soạn thảo thường trình. Để thử nghiệm, bạn có thể trả về giá trị của tham số đầu vào VAR01, như sau: CREATE OR REPLACE FUNCTION FUNCTION1 ( VAR01 INT ) RETURN INT AS BEGIN RETURN VAR01; END; Tạo một gói PL/SQL với Oracle Thực hiện theo các bước sau để sử dụng trình thủ thuật các gói PL/SQL mới (New PL/SQL Package) để tạo một gói PL/SQL: 1. Nhấn chuột phải trên thư mục PL/SQL Packages dự án phát triển dữ liệu của Oracle. Từ trình đơn, chọn New -> PL/SQL Package. Trình thủ thuật New PL/SQL Package xuất hiện, như trong Hình 25. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 23 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 25. Đặt tên một gói PL/SQL mới với Oracle Trình thủ thuật này chỉ có một trang. Xác định các nền tảng đích và tên của gói PL/SQL. 2. Nhấn Finish để tạo gói PL/SQL, thêm nó vào dự án của bạn và mở nó trong trình soạn thảo gói PL/SQL. 3. Kiểm tra gói PL/SQL mới trong trình soạn thảo. Nó có hai thường trình, ExampleProcedure và ExampleFunction, mà bạn có thể triển khai và thử nghiệm như chúng có hoặc sửa đổi hoặc thay thế trong trình soạn thảo với các thường trình của gói PL/SQL riêng của bạn. Đặc tả gói PL/SQL cung cấp chữ ký cho thủ tục và hàm: CREATE OR REPLACE PACKAGE PACKAGE1 AS /* PL/SQL package specification */ PROCEDURE ExampleProcedure; FUNCTION ExampleFunction RETURN INT; END PACKAGE1; Phần thân gói PL/SQL cài đặt thủ tục và hàm này: CREATE OR REPLACE PACKAGE BODY PACKAGE1 AS /* PL/SQL package body */ PROCEDURE ExampleProcedure AS X INT := 1; BEGIN X := X + 1; END ExampleProcedure; FUNCTION ExampleFunction RETURN INT AS X INT; BEGIN X := 1; RETURN (X + 1); END ExampleFunction; END PACKAGE1; Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 24 của 56 ibm.com/developerWorks/vn/ developerWorks® Di chuyển một bảng DB2 sang Oracle Phần này cho bạn thấy cách soạn thảo gói PL/SQL mặc định mà bạn đã tạo ra để cho nó thực hiện một số công việc có ích. Sau đó, bạn sẽ tìm hiểu cách sao chép gói PL/SQL Oracle sang DB2. Vì vậy, bạn muốn có cùng một bảng trên cả hai DB2 và Oracle. Bài viết này giả thiết rằng bạn đã cài đặt cơ sở dữ liệu mẫu GSDB trên máy chủ DB2 LUW 9.7 của bạn, nhưng nó không giả thiết rằng cơ sở dữ liệu Oracle của bạn có cùng bảng mẫu. Vì vậy, hãy làm theo các bước sau để tạo lại một bảng DB2 và dữ liệu của nó trên Oracle. 1. Kết nối đến cơ sở dữ liệu GSDB của bạn đối với DB2 và mở rộng các bảng trong lược đồ GOSALES của nó để tìm thấy bảng INVENTORY_LEVELS. 2. Mở rộng các cột của bảng để bạn có thể xem các tên và các kiểu dữ liệu, như trong Hình 26. Hình 26. Xem các cột của bảng GOSALES.INVENTORY_LEVELS 3. Nhấn chuột phải vào bảng INVENTORY_LEVELS. Từ trình đơn hiện lên, chọn Generate DDL.... Trình đơn Generate DDL xuất hiện 4. Xóa dấu chọn của hộp chọn Các câu lệnh COMMENT ON (COMMENT ON statements) và mệnh đề Trong vùng bảng (IN TABLESPACE clause). Để lại dấu chọn CREATE statements, như trong Hình 27. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 25 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 27. Thiết lập các tùy chọn cho việc tạo DDL, để tạo bảng INVENTORY_LEVELS 5. Nhấn Next >. Trang Objects xuất hiện. 6. Nhấn Bỏ chọn Tất cả (Deselect All), sau đó đánh dấu chọn hộp Ràng buộc khóa chính (Primary key constraint) và Các bảng (Tables), như trong Hình 28. Hình 28. Chọn các đối tượng cho việc tạo DDL, để tạo bảng INVENTORY_LEVELS Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 26 của 56 ibm.com/developerWorks/vn/ developerWorks® 7. Nhấn Next >. Trang Lưu và chạy DDL (Save and Run DDL) xuất hiện. 8. Xem lại các câu lệnh đã tạo ra trong vùng Xem trước DDL (Preview DDL): --<ScriptOptions statementTerminator="!"> CREATE TABLE INVENTORY_LEVELS ( INVENTORY_YEAR SMALLINT NOT NULL, INVENTORY_MONTH SMALLINT NOT NULL, WAREHOUSE_BRANCH_CODE INTEGER NOT NULL, PRODUCT_NUMBER INTEGER NOT NULL, OPENING_INVENTORY INTEGER, QUANTITY_SHIPPED INTEGER, ADDITIONS INTEGER, UNIT_COST DECIMAL(19 , 2), CLOSING_INVENTORY INTEGER NOT NULL, AVERAGE_UNIT_COST DECIMAL(19 , 2) ) DATA CAPTURE NONE! ALTER TABLE INVENTORY_LEVELS ADD CONSTRAINT SQL090729130124500 PRIMARY KEY (INVENTORY_YEAR, INVENTORY_MONTH, WAREHOUSE_BRANCH_CODE, PRODUCT_NUMBER)! 9. Nhấn Browse... để hiển thị hộp thoại Lựa chọn thư mục (Folder Selection). 10. Chọn Phát triển Oracle (Oracle Development) và nhấn OK. 11. Thay đổi giá trị của trường tên tệp thành inventory_levels.sql, như trong Hình 29. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 27 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 29. Xác định tên cho tệp với DDL được tạo. 12. Nhấn Next > để hiển thị các trang Summary 13. Nhấn Finish. Kịch bản lệnh inventory_levels sẽ xuất hiện trong thư mục Các kịch bản lệnh SQL (SQL Scripts) của dự án phát triển Oracle của bạn. 14. Kịch bản lệnh này được tạo cho DB2, nhưng vì muốn chạy nó với Oracle, bạn cần phải vào trình soạn thảo SQL và loại bỏ mệnh đề DATA CAPTURE NONE. Rồi kịch bản lệnh này sẽ giống như sau: Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 28 của 56 ibm.com/developerWorks/vn/ developerWorks® --<ScriptOptions statementTerminator="!"> CREATE TABLE INVENTORY_LEVELS ( INVENTORY_YEAR SMALLINT NOT NULL, INVENTORY_MONTH SMALLINT NOT NULL, WAREHOUSE_BRANCH_CODE INTEGER NOT NULL, PRODUCT_NUMBER INTEGER NOT NULL, OPENING_INVENTORY INTEGER, QUANTITY_SHIPPED INTEGER, ADDITIONS INTEGER, UNIT_COST DECIMAL(19 , 2), CLOSING_INVENTORY INTEGER NOT NULL, AVERAGE_UNIT_COST DECIMAL(19 , 2) )! ALTER TABLE INVENTORY_LEVELS ADD CONSTRAINT SQL090729130124500 PRIMARY KEY (INVENTORY_YEAR, INVENTORY_MONTH, WAREHOUSE_BRANCH_CODE, PRODUCT_NUMBER)! 15. Nhấn chuột phải vào trong trình soạn thảo SQL. Từ trình đơn hiện lên của trình soạn thảo, chọn Run SQL. Khi kịch bản lệnh hoàn thành, bạn sẽ thấy một trạng thái Đã thành công ("Succeeded") cho phép toán này trong khung nhìn SQL Results. Vì tên bảng trong câu lệnh CREATE không đủ tiêu chuẩn, bảng này được tạo trong cơ sở dữ liệu Oracle của bạn theo mã nhận dạng người dùng của bạn. Trong các bước còn lại của phần này, bạn sẽ chuyển dữ liệu từ bảng INVENTORY_LEVELS trong DB2 vào bảng tương ứng trong Oracle. 16. Trong kết nối DB2 của bạn tới GSDB, nhấn chuột phải trên bảng INVENTORY_LEVELS. Từ trình đơn hiện lên, chọn Data -> Extract.... Trình thủ thuật Trích ra dữ liệu (Extract Data) xuất hiện. 17. Sử dụng trường tệp đầu ra để xác định đường dẫn và tên của tệp mà bạn muốn lấy dữ liệu từ bảng tới tệp đó. Theo tùy chọn, bạn có thể sử dụng Browse... để hỗ trợ cho việc này. Ví dụ, bạn có thể nhập vào C:\temp\INVENTORY_LEVELS.data, như trong Hình 30. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 29 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 30. Xuất dữ liệu từ GOSALES.INVENTORY_LEVELS 18. Nhấn Finish. Hoạt động này bắt đầu trong khung nhìn SQL Results. Khi nó hoàn thành, tab message1 cho thấy như sau: Extracting "GOSALES"."INVENTORY_LEVELS"... Data extraction was successful. 53730 row(s) extracted. 19. Trong kết nối Oracle của bạn, nhấn chuột phải trên bảng INVENTORY_LEVELS. Từ trình đơn hiện lên, chọn Data -> Load.... Trình thủ thuật Nạp dữ liệu (Load Data) sẽ xuất hiện. 20. Trong trường tệp đầu vào, nhập vào đường dẫn và tên của tệp đầu ra, mà đã trích xuất dữ liệu đến trình thủ thuật Trích xuất dữ liệu (Extract Data) trong bước 17. 21. Nhấn Finish. Một lần nữa, một hoạt động bắt đầu trong khung nhìn SQL Results. Khi nó hoàn thành, bảng INVENTORY_LEVELS trong Oracle chứa dữ liệu tương tự như bảng trong DB2. 22. Để xem một ví dụ về dữ liệu đó, nhấn chuột phải vào bảng INVENTORY_LEVELS trong kết nối Oracle của bạn và chọn Data -> Sample Contents từ trình đơn hiện lên. Hoạt động Các nội dung mẫu (Sample Contents) hiển thị dữ liệu trong tab Result1 của khung nhìn SQL Results. Sửa đổi một gói PL/SQL với Oracle Khi bạn kết thúc việc tạo một đối tượng mới trong một trình thủ thuật, ODS 2.2 mở đối tượng đó trong trình soạn thảo thích hợp. Nếu bạn đã đóng một thể hiện của trình soạn thảo cho một đối tượng, bạn có thể mở lại nó bằng cách nhấn đúp vào đối tượng đó trong dự án phát triển dữ liệu của bạn hoặc bằng cách nhấn chuột phải vào nó và chọn Open từ trình đơn hiện lên. 1. Mở trình soạn thảo gói PL/SQL cho gói PL/SQL có tên là package1 mà bạn đã tạo ra trong dự án Phát triển Oracle của mình. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 30 của 56 ibm.com/developerWorks/vn/ developerWorks® Trình soạn thảo gói PL/SQL có hai tab, một cho đặc tả và một cho phần thân. Đặc tả này là khai báo của API công cộng cho gói PL/SQL của bạn. Việc thực hiện là trong phần thân. Cả hai tab này hiển thị mã nguồn của bạn bằng trình soạn thảo SQL; tuy nhiên, tùy chọn Xác nhận hợp lệ cú pháp câu lệnh (Validate Statement Syntax) (hiển thị trong trình đơn hiện lên với trình trình soạn thảo ) không được đánh dấu chọn theo mặc định do ODS 2.2 không có khả năng phân tích cú pháp PL/SQL trực tiếp để xác nhận tính hợp lệ của cú pháp. Nếu bạn đánh dấu chọn tùy chọn này trong trình đơn hiện lên, thì trình phân tích cú pháp SQL sẽ sinh ra các lỗi về cú pháp PL/SQL. Nội dung của cả hai tab hoàn toàn có thể soạn thảo được. Bạn có thể thay đổi tên của gói PL/ SQL, thêm, sửa đổi hoặc loại bỏ các thường trình và (trong tab Body) cài đặt các phần thân thường trình. Bạn có thể thay đổi tên của gói PL/SQL trong trình soạn thảo, nhưng bạn phải thay đổi nó tại bốn vị trí, ở đầu và ở cuối của đặc tả và phần thân. Khi bạn lưu một sự thay đổi tên, tên đó được cập nhật trong dự án của bạn. 2. Đi đến tab Specification và thay đổi tên của gói thành INVENTORY và thay các mẫu hiện có bằng chữ ký cho một hàm QUERY_CLOSING_INVENTORY, như sau: CREATE OR REPLACE PACKAGE INVENTORY AS FUNCTION QUERY_CLOSING_INVENTORY( Y NUMBER, M NUMBER, W NUMBER, P NUMBER ) RETURN NUMBER; END INVENTORY; 3. Đi đến tab Body và thay đổi tên của gói thành INVENTORY và thay các mẫu hiện có bằng việc thực hiện với hàm QUERY_CLOSING_INVENTORY, như sau: CREATE OR REPLACE PACKAGE BODY INVENTORY AS FUNCTION QUERY_CLOSING_INVENTORY( Y NUMBER, M NUMBER, W NUMBER, P NUMBER ) RETURN NUMBER AS X NUMBER(38,0); BEGIN SELECT CLOSING_INVENTORY INTO X FROM INVENTORY_LEVELS WHERE INVENTORY_YEAR = Y AND INVENTORY_MONTH = M AND WAREHOUSE_BRANCH_CODE = W AND PRODUCT_NUMBER = P; RETURN X; END; END INVENTORY; 4. Lưu các thay đổi của bạn bằng cách nhấn Ctrl+S hoặc bằng cách chọn File -> Save trên trình đơn chính hoặc từ trình đơn hiện lên của trình soạn thảo. Cả hai đặc tả và phần thân được lưu trữ và tên mới xuất hiện trong thư mục PL/SQL Packages của dự án của bạn. Sau đó, bạn sẽ thấy cách triển khai và thử nghiệm gói PL/SQL này. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 31 của 56 developerWorks® ibm.com/developerWorks/vn/ Soạn thảo một thường trình PL/SQL Sau khi tạo một thủ tục hoặc hàm PL/SQL, bạn thường muốn soạn thảo nó để thêm logic nghiệp vụ riêng của bạn. Các trình soạn thảo cho một thủ tục hoặc hàm PL/SQL cung cấp chức năng tương tự cho trình soạn thảo cho một gói PL/SQL. Trình soạn thảo thường trình PL/SQL có hai tab. Tab Cấu hình (Configuration) chứa các thuộc tính của mô hình. Tab Source chứa mã nguồn PL/SQL. Tab Configuration đối với một thủ tục PL/SQL cho Oracle được hiển thị trong Hình 31: Hình 31. Xem lại tab Configuration của trình soạn thảo thủ tục PL/SQL cho TEST_TIMESTAMP Thuộc tính có ích nhất trên tab Configuration là cái cho biết liệu thường trình này có được kích hoạt để gỡ rối không. Bạn phải đánh dấu chọn hộp này và triển khai thay đổi này trước khi bạn có thể gỡ rối thủ tục. ODS 2.2 không hỗ trợ gỡ rối một hàm độc lập (PL/SQL, SQL hoặc OLE DB). Các liên kết Triển khai (Deploy), Chạy (Run) và Gỡ rối (Debug) ở bên phải của phần Cấu hình triển khai (Deployment Configuration) hoạt động như các nút bấm hay các mục của trình đơn, để gọi các hành động bình thường đối với triển khai và thử nghiệm công việc của bạn. Các phần Các tham số và Các tùy chọn (Parameters and Options) có thể được mở rộng. Các tham số trong bảng cho một thường trình PL/SQL là không soạn thảo được, như trong Hình 32. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 32 của 56 ibm.com/developerWorks/vn/ developerWorks® Hình 32. Xem lại các tham số cho thủ tục PL/SQL TEST_TIMESTAMP Bạn có thể soạn thảo nội dung của tab Source. Bạn có thể thay đổi tên của thường trình, thêm, sửa đổi hoặc xoá các tên tham số, các chế độ và các kiểu dữ liệu, sửa đổi kiểu trả về của một hàm và cài đặt phần thân của thường trình đó. Trình soạn thảo không xác nhận hợp lệ cú pháp PL/SQL khi bạn nhập nó vào, nhưng nó nhấn mạnh cú pháp bằng màu như trong Hình 33. Hình 33. Soạn thảo mã nguồn của thủ tục PL/SQL TEST_TIMESTAMP Triển khai gói PL/SQL cho máy chủ Oracle của bạn Không giống như một ứng dụng Java, mà có thể biên dịch và chạy cục bộ, bạn phải triển khai các gói, thủ tục và hàm PL/SQL cho máy chủ cơ sở dữ liệu của bạn trước khi bạn có thể chạy chúng. Bạn không thể chạy chúng trong dự án của bạn, nhưng có thể triển khai chúng và chạy chúng từ dự án của bạn. Khi bạn chọn một gói, thủ tục hoặc hàm PL/SQL trong một dự án phát triển dữ liệu và sau đó chọn hành động Deploy... từ trình đơn hiện lên của đối tượng, và nếu bạn kết nối với cơ sở dữ liệu liên kết với dự án, thì trình thủ thuật Triển khai gói PL/SQL (Deploy PL/SQL Package) xuất hiện. Trong trường hợp này, trình thủ thuật bắt đầu với trang Triển khai tùy chọn (Deploy Options), như trong Hình 34. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 33 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 34. Thiết lập các tùy chọn triển khai cho một gói PL/SQL Khi bạn chọn thư mục của đối tượng này hoặc nhiều đối tượng trong một thư mục và sau đó chọn hành động Deploy... từ trình đơn hiện lên, trình thủ thuật Triển khai gói PL/SQL (Deploy PL/SQL Package) xuất hiện. Trong trường hợp này, trình thủ thuật bắt đầu với trang Chọn lựa (Selection) trước trang Deploy Options như trong Hình 35. Từ trang này bạn có thể kiểm tra các đối tượng riêng hoặc nhấn vào Chọn tất cả (Select All). Hình 35. Chọn các gói PL/SQL để triển khai Trình thủ thuật Triển khai (Deploy) cho phép bạn triển khai một hoặc nhiều đối tượng cùng loại. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 34 của 56 ibm.com/developerWorks/vn/ developerWorks® Khi bạn triển khai nhiều thủ tục PL/SQL, bạn có các tùy chọn phụ trên trang Deploy Options, như trong Hình 36. Hình 36. Thiết lập các tùy chọn cho việc triển khai nhiều gói PL/SQL Bạn có thể triển khai các đối tượng được chọn cho cơ sở dữ liệu hiện tại của mình, đây là cơ sở dữ liệu có liên kết với dự án hoặc có thể chọn một cơ sở dữ liệu tương thích khác làm đích triển khai của bạn. Bạn có thể xác định một lược đồ đích (hoặc chủ sở hữu, với Oracle). Đối với DB2, lược đồ đích là SQLID sẽ được sử dụng cho các đối tượng không đủ tiêu chuẩn. Đối với DB2, bạn có thể thay đổi đường dẫn mặc định bằng cách thêm hoặc tách các lược đồ ra khỏi danh sách được phân cách bằng dấu phẩy này. Bạn cũng có thể xác định cách xử lý các đối tượng trùng lặp. Theo mặc định, ODS 2.2 loại bỏ các đối tượng trùng lặp trước khi tạo lại chúng, nhưng nó cũng có thể dừng và khôi phục lại các thay đổi nếu nó gặp một lỗi do đối tượng đã tồn tại trên cơ sở dữ liệu. Khi mã nguồn của gói PL/SQL của bạn chứa câu lệnh CREATE OR REPLACE, các tuỳ chọn xử lý trùng lặp sẽ được bỏ qua trừ khi bạn loại bỏ hoặc thay thế OR REPLACE. Đối với DB2 LUW 9.7, bạn có thể thêm OR REPLACE cho bất kỳ câu lệnh CREATE PROCEDURE hoặc CREATE FUNCTION nào, nhưng với các thường trình SQL và Java, các tùy chọn xử lý trùng lặp không được bỏ qua. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 35 của 56 developerWorks® ibm.com/developerWorks/vn/ Khi bạn nhấn Next >, trang Deploy Options hoặc trang PL/SQL Package Options xuất hiện, như trong Hình 37. Hình 37. Thiết lập các tùy chọn triển khai cho các gói PL/SQL Trang này cho phép bạn thay đổi các tùy chọn cho mỗi đối tượng mà bạn đang triển khai. Đối với gói PL/SQL, lựa chọn duy nhất của bạn là có cho phép gỡ rối không. Có thể có nhiều tùy chọn hơn cho các kiểu đối tượng khác và các đích cơ sở dữ liệu. Ngoại trừ lựa chọn gỡ rối, các tùy chọn mà bạn thay đổi ở đây không được lưu trong dự án của bạn. Nếu việc triển khai thành công, chúng sẽ được lưu chỉ trong cơ sở dữ liệu đích của bạn. Khi bạn nhấn vào Finish, các đối tượng được chọn sẽ được triển khai tuần tự trong một đoạn nền. Các kết quả được báo cáo trong khung nhìn SQL Results. Khi có nhiều hơn một đối tượng được triển khai, các hoạt động cho từng đối tượng được nhóm lại với nhau trong khung nhìn SQL Results. Để xem trạng thái của một đối tượng riêng, mở rộng các nhóm và chọn đối tượng đó, như trong Hình 38. Hình 38. Mở rộng hoạt động triển khai trong khung nhìn SQL Results Chạy một gói PL/SQL trên Oracle Bạn có thể chạy một thường trình độc lập (bất kể ngôn ngữ thực hiện của nó) trong Data Source Explorer. Trong Data Project Explorer, nếu có thể triển khai nó, thì bạn cũng có thể chạy nó. Khi bạn chọn một gói PL/SQL để chạy, đầu tiên bạn được nhắc chọn một thủ tục hoặc hàm trong gói Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 36 của 56 ibm.com/developerWorks/vn/ developerWorks® PL/SQL. Nếu thường trình khai báo các tham số đầu vào, thì bạn cũng được nhắc để cung cấp giá trị cho chúng. Thực hiện theo các bước sau để chạy hàm CRIOLLO1.INVENTORY.QUERY_CLOSING_INVENTORY: 1. Nhấn chuột phải trên gói PL/SQL có tên INVENTORY. Từ trình đơn hiện lên, chọn Run.... Hộp thoại Run - CRIOLLO1.INVENTORY xuất hiện, như trong Hình 39. Hình 39. Chạy hàm QUERY_CLOSING_INVENTORY trong gói PL/SQL 2. Nhấn Run. Hộp thoại Chỉ định các giá trị tham số (Specify Parameter Values) xuất hiện. 3. Như trong hình 40, nhập các giá trị tham số sau đây: • Y = 2007 • M=1 • W=7 • P = 2110 Hình 40. Nhập các giá trị cho các tham số đầu vào để chạy hàm QUERY_CLOSING_INVENTORY 4. Nhấn OK. Hoạt động chạy xuất hiện trong khung nhìn SQL Results. Tab Result1 với hoạt động này cho thấy giá trị trả về của hàm, như trong Hình 41. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 37 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 41. Kiểm tra kết quả sau khi chạy hàm QUERY_CLOSING_INVENTORY Bạn cũng có thể sử dụng Data Source Explorer hoặc Data Project Explorer để chạy một thường trình trong một gói PL/SQL. Gỡ rối một gói PL/SQL trên Oracle ODS 2.2 cung cấp các trình gỡ rối thường trình PL/SQL cho cả hai DB2 LUW 9.7 và (khi sử dụng trình điều khiển JDBC mỏng Oracle) Oracle 10g hoặc 11g. Thực hiện theo các bước sau để gỡ rối một gói PL/SQL trên Oracle: 1. Khi bạn tạo, soạn thảo hoặc triển khai một thường trình có thể được gỡ rối, hãy đánh dấu chọn hộp Cho phép gỡ rối (Enable debugging): Nếu bạn triển khai một gói hoặc thủ tục PL/SQL mà không đánh dấu chọn hộp này, máy chủ không tạo ra các thông tin gỡ rối cho nó. Thiết lập và lưu tùy chọn này trong trình soạn thảo thường trình là không đủ cho phép gỡ rối. Bạn cũng phải triển khai thường trình đó với tùy chọn này đã chọn. Triển khai gói PL/SQL có tên INVENTORY. Hãy chắc chắn đánh dấu chọn hộp kiểm tra Enable debugging trên trang PL/SQL Package Options. 2. Nhấn chuột phải vào gói INVENTORY. Từ trình đơn hiện lên, chọn Debug.... Tương tự như khi bạn chạy gói đó, điều này làm cho hộp thoại Run - CRIOLLO1.INVENTORY xuất hiện với hàm được chọn sau đây: QUERY_CLOSING_INVENTORY (NUMBER,NUMBER,NUMBER,NUMBER) RETURN NUMBER 3. Như các bạn đã làm khi chạy thường trình này, hãy nhập các giá trị tham số sau đây: • Y = 2007 • M=1 • W=7 • P = 2110 4. Nhấn OK. Sau đó bạn sẽ được yêu cầu xác nhận rằng bạn muốn chuyển sang phối cảnh Debug, như trong Hình 42. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 38 của 56 ibm.com/developerWorks/vn/ developerWorks® Hình 42. Xác nhận rằng bạn muốn chuyển sang phối cảnh Debug 5. Nhấn Yes. 6. Phối cảnh Debug mang đến cho bạn các khung nhìn mà bạn cần để gỡ rối một thường trình. Bạn có thể sắp đặt và bố trí theo kích thước các khung nhìn này cho phù hợp với sở thích riêng của bạn: • Theo dõi ngăn xếp xuất hiện trong khung nhìn Debug. Thanh công cụ cho khung nhìn này chứa các nút có ích sau đây: Biểu tượng Tên nút (phím tắt) Chức năng Resume (F8) Chạy thường trình của bạn tới điểm dừng kế tiếp hoặc hoàn thành. Terminate (Ctrl+F2) Kết thúc thường trình của bạn và phiên làm việc gỡ rối mà không cần trả về kết quả. Step into (F5) Cho phép bạn gỡ rối hàm đã tham chiếu hoặc thủ tục đã gọi câu lệnh hiện tại. Step over (F6) Bước qua hàm đã tham chiếu hoặc thủ tục đã gọi câu lệnh hiện tại. Step return (F7) Trả về từ một hàm hay thủ tục mà bạn đã bước vào. • Các điểm dừng của bạn xuất hiện trong khung nhìn Breakpoints. • Các biến thường trình với các giá trị hiện tại của chúng xuất hiện trong khung nhìn Các biến (Variables). • Mã nguồn của bạn sẽ xuất hiện trong trình soạn thảo thường trình. 7. Trình gỡ rối luôn dừng lại ở dòng đầu tiên của một thường trình, ngay cả khi bạn chưa đặt một điểm dừng (Breakpoint). Để thiết lập một điểm dừng, nhấn đúp vào lề trái của trình soạn thảo thường trình hoặc nhấn chuột phải vào trong lề bên trái của câu lệnh, nơi bạn muốn trình gỡ rối dừng lại và chọn Add Breakpoint từ trình đơn hiện lên. Hình 43 cho thấy khung nhìn của phối cảnh gỡ rối sau khi đã bắt gặp một điểm dừng trên dòng 5 của PROCEDURE1. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 39 của 56 developerWorks® ibm.com/developerWorks/vn/ Hình 43. Thiết lập một điểm dừng trong phối cảnh Debug 8. Nếu bạn chạy cho đến khi hoàn thành, thì khung nhìn SQL Results sẽ xuất hiện để hiển thị cho bạn trạng thái và các kết quả bất kỳ, như trong Hình 44. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 40 của 56 ibm.com/developerWorks/vn/ developerWorks® Hình 44. Kiểm tra trạng thái và kết quả sau khi gỡ rối Lời khuyên: Khi bạn soạn thảo một gói hoặc thủ tục Oracle PL/SQL mà bạn định gỡ rối, hãy giữ CREATE và từ khóa đối tượng trên cùng dòng. Máy chủ của Oracle sẽ loại bỏ các ngắt dòng cho đến sau từ khóa đối tượng (PACKAGE, PACKAGE BODY, PROCEDURE hoặc FUNCTION). Vì vậy, nếu bạn không làm điều này, các số dòng trong mã nguồn của bạn sẽ không khớp với các số dòng mà máy chủ biết. Một thủ tục có thể gọi thủ tục khác hoặc thực hiện một hàm khi đánh giá một biểu thức. Trình gỡ rối cho phép bạn bước vào các cuộc gọi lồng nhau này và các tham chiếu hàm. Bạn có thể gỡ rối một hàm PL/SQL nếu nó là một gói PL/SQL và bạn có thể bước từ một thủ tục PL/SQL đến một hàm PL/SQL nếu nó đang ở trong cùng một gói PL/SQL. Bạn có thể gỡ rối một thủ tục PL/SQL nếu nó ở trong một gói PL/SQL hoặc nếu nó độc lập và bạn có thể bước từ một cuộc gọi trong phần thân của một thủ tục vào trong thủ tục PL/SQL mà nó được gọi. Không giống như trình gỡ rối thường trình SQL và Java trong ODS 2.2, trình gỡ rối PL/SQL cho DB2 không yêu cầu bạn cài đặt hoặc bắt đầu một trình quản lý phiên gỡ rối. Trình quản lý phiên gỡ rối được tích hợp với máy khách của trình gỡ rối và bắt đầu tự động. Phát triển các đối tượng PL/SQL cho DB2 LUW 9.7 Để phát triển một gói, thủ tục hoặc hàm PL/SQL cho DB2, bạn thực hiện cùng các nhiệm vụ như làm với Oracle. Các sự khác nhau giữa sự hỗ trợ của DB2 và của Oracle cho PL/SQL không quan trọng: • Khi bạn đặt tên một gói, thủ tục hoặc hàm PL/SQL cho Oracle, tên (không có chủ sở hữu) được dài đến 30 ký tự. Đối với DB2, tên có thể dài đến 128 ký tự. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 41 của 56 developerWorks® ibm.com/developerWorks/vn/ • Khi bạn tạo một thủ tục hoặc hàm độc lập cho DB2, bạn có một sự lựa chọn về các ngôn ngữ khác PL/SQL (SQL và Java). Do đó, trường Language để chọn ngôn ngữ thực hiện trong trình thủ thuật này là được phép, và là SQL theo mặc định. • Khi bạn đang sử dụng một trình thủ thuật để thêm một tham số cho một thủ tục hoặc hàm PL/ SQL hoặc thay đổi kiểu trả về của một hàm, danh sách các kiểu dữ liệu cho DB2 bao gồm các kiểu dữ liệu SQL cũng như các kiểu dữ liệu PL/SQL. Bạn có thể sử dụng, ví dụ, CHAR(254) FOR BIT DATA đối với tham số cho DB2. Ở đây DB2 hỗ trợ các từ đồng nghĩa cho các kiểu dữ liệu, như là INTEGER và INT, trình thủ thuật hiển thị từ đồng nghĩa DB2 ưa thích (INTEGER). Để có một danh sách các kiểu dữ liệu được hỗ trợ, xem Phụ lục A. • Đối với DB2, bạn xác định độ dài, các độ chính xác hoặc các thang đo đối với các kiểu dữ liệu được tham số hóa như thường và những điều này hạn chế các giá trị của các tham số. • Khi bạn tạo một dự án DB2 trong Data Project Explorer, ngoài các thư mục cho các gói PL/ SQL, các kịch bản lệnh SQL, các thủ tục lưu sẵn, các hàm do người dùng định nghĩa, các đối tượng XML, bạn thấy một thư mục Các dịch vụ Web (Web Services), như trong Hình 45. Hình 45. Xem thư mục Các dịch vụ Web trong một dự án phát triển dữ liệu cho DB2 Các hành động liên kết với thư mục Web Services giúp bạn tạo ra các dịch vụ Web chạy các câu lệnh theo kịch bản lệnh SQL hoặc gọi các thủ tục được lưu sẵn và các hàm do người dùng định nghĩa. Để tạo ra một dịch vụ web, nhấn chuột phải vào thư mục Web Services và chọn New Web Service... từ trình đơn hiện lên, để chạy trình thủ thuật. Sau đó bạn có thể kéo các kịch bản lệnh SQL và các thủ tục được lưu sẵn vào dịch vụ mới. Bạn không thể sao chép hoặc kéo một gói PL/SQL vào trong dịch vụ Web để tạo ra một hoạt động gọi thủ tục trong gói PL/SQL. Để tạo một hoạt động dịch vụ Web gọi một thủ tục trong một gói PL/SQL, hãy tạo một dịch vụ bù nhìn (dummy) cho thủ tục khác, sau đó soạn thảo hoạt động đó để thêm tên gói PL/SQL như là một từ hạn định ở giữa, ví dụ: TEAM.INVENTORY.TOTAL_INVENTORY_LEVELS Sau khi bạn tạo dự án phát triển dữ liệu DB2 của mình, bạn có thể bắt đầu phát triển, nhờ sử dụng PL/SQL trong một dự án DB2 bằng cách kéo hoặc sao chép các đối tượng PL/SQL từ dự án Oracle sang dự án DB2 của bạn. Hoặc, bạn có thể sao chép hoặc kéo các đối tượng từ kết nối cơ sở dữ liệu Oracle của bạn vào Data Source Explorer. Kéo một đối tượng PL/SQL từ dự án Oracle sang dự án DB2 Sau khi bạn đã tạo một gói PL/SQL hoặc thủ tục hoặc hàm độc lập trong một dự án phát triển dữ liệu với Oracle, bạn có thể sao chép hoặc kéo nó sang dự án Oracle khác hoặc vào trong một dự án phát triển dữ liệu với DB2 LUW 9.7. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 42 của 56 ibm.com/developerWorks/vn/ developerWorks® Sau khi bạn đã tạo một gói PL/SQL hoặc thủ tục hoặc hàm độc lập trong một dự án phát triển dữ liệu với Oracle, bạn có thể tìm thấy nó trong Data Source explorer và sao chép hoặc kéo nó vào một dự án phát triển dữ liệu với Oracle hoặc DB2 LUW 9.7. Thực hiện theo các bước sau để kéo một đối tượng PL/SQL từ Oracle vào một dự án DB2: 1. Từ Data Source Explorer, mở rộng kết nối Oracle của bạn và tìm gói PL/SQL có tên là INVENTORY. 2. Điều chỉnh bàn làm việc của bạn sao cho nhìn thấy được cả Data Source Explorer và cả Data Project Explorer. 3. Kéo gói PL/SQL từ Data Source Explorer vào các thư mục PL/SQL Packages của dự án DB2 của bạn trong Data Project Explorer. (Nếu cả Data Source Explorer và cả Data Project Explorer không thể nhìn thấy được, bạn có thể sao chép từ nguồn và dán vào dự án đích). 4. Khi hoạt động kéo và thả hoàn thành, bạn sẽ được thông báo rằng có thể tồn tại một sự không tương thích, như trong Hình 46. Hình 46. Chấp nhận một sự không tương thích có thể tồn tại giữa các dự án Nhấn OK. 5. Mở gói PL/SQL có tên là INVENTORY mà bạn đã chuyển sang dự án DB2 của bạn bằng cách nhấn đúp vào nó, hoặc bằng cách nhấn chuột phải và chọn Open từ trình đơn thả xuống. 6. DB2 không giống như độ chính xác và thang đo trên khai báo biến X NUMBER(38,0). Thay đổi tất cả các kiểu dữ liệu để khớp với các kiểu trong bảng INVENTORY_LEVELS trên DB2, trong tab Đặc tả của trình soạn thảo: CREATE OR REPLACE PACKAGE INVENTORY AS FUNCTION QUERY_CLOSING_INVENTORY( Y SMALLINT, M SMALLINT, W INTEGER, P INTEGER ) RETURN INTEGER; END INVENTORY; 7. Hãy thực hiện các thay đổi tương ứng trong tab Body: CREATE OR REPLACE PACKAGE BODY INVENTORY AS FUNCTION QUERY_CLOSING_INVENTORY( Y SMALLINT, M SMALLINT, W INTEGER, P INTEGER ) RETURN INTEGER AS Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 43 của 56 developerWorks® ibm.com/developerWorks/vn/ X INTEGER; BEGIN SELECT CLOSING_INVENTORY INTO X FROM INVENTORY_LEVELS WHERE INVENTORY_YEAR = Y AND INVENTORY_MONTH = M AND WAREHOUSE_BRANCH_CODE = W AND PRODUCT_NUMBER = P; RETURN X; END; END INVENTORY; 8. Nếu bạn đã kéo một đối tượng PL/SQL bao gồm một kiểu dữ liệu ký tự, thì bạn cần phải chắc chắn đặt các độ dài chuỗi tối đa khi bạn soạn thảo các kiểu dữ liệu. Đối với Oracle, chiều dài mặc định cho CHAR là 2000. Đối với DB2, chiều dài mặc định cho CHAR là 1. 9. Lưu các thay đổi của bạn bằng cách nhấn Ctrl+S hoặc bằng cách chọn File -> Save trên trình đơn chính hoặc từ trình đơn hiện lên của trình soạn thảo trình. Cả hai đặc tả và phần thân được lưu. Triển khai, chạy và gỡ rối trên DB2 Triển khai, chạy và gỡ rối các gói và thường trình PL/SQL trên DB2 tương tự như thực hiện các nhiệm vụ này trên Oracle hoặc thực hiện các nhiệm vụ này cho các thường trình SQL và Java trên DB2. Thực hiện theo các bước sau để triển khai, chạy và gỡ rối một trình thủ thuật PL/SQL Package để tạo một gói PL/SQL: 1. Khi bạn chọn một gói, thủ tục hoặc hàm PL/SQL trong một dự án phát triển dữ liệu và sau đó chọn hành động Deploy... từ trình đơn hiện lên của đối tượng và nếu bạn được kết nối với cơ sở dữ liệu liên kết với dự án đó, thì sau đó trình thủ thuật Deploy PL/SQL Package xuất hiện, như trong Hình 47. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 44 của 56 ibm.com/developerWorks/vn/ developerWorks® Hình 47. Chọn các tùy chọn cho các gói PL/SQL để triển khai cho DB2 Trường đường dẫn mặc định sẽ xuất hiện trong nhóm thứ hai (Lược đồ đích...) chỉ cho DB2. Trường này không xuất hiện với Oracle. Nhóm thứ ba (Xử lý lỗi) xuất hiện trên trang này chỉ khi bạn đã chọn nhiều hơn một gói PL/ SQL để triển khai với hành động này. 2. Khi phát triển, một thói quen tốt là đánh dấu chọn hộp kiểm tra Enable debugging trên trang Các tùy chọn gói PL/SQL (PL/SQL Package Options) của trình thủ thuật Triển khai (Deploy) để cho DB2 biên dịch đối tượng với các thông tin gỡ rối 3. Nhấn Finish. Các đối tượng được chọn sẽ được triển khai tuần tự trong một đoạn nền. Các kết quả được báo cáo trong khung nhìn SQL Results. 4. Bạn có thể chạy một thường trình độc lập (bất kể ngôn ngữ thực hiện của nó) trong Data Source Explorer. Trong Data Project Explorer, nếu bạn có thể triển khai nó, thì sau đó bạn cũng có thể chạy nó. Nếu thường trình khai báo các tham số đầu vào, thì sau đó bạn được nhắc cung cấp giá trị cho chúng. 5. Các kiểu dữ liệu tham số được hiển thị trong hộp thoại chạy được các máy chủ cơ sở dữ liệu chuẩn hóa. Các máy chủ DB2 chuẩn hóa các kiểu dữ liệu PL/SQL - cụ thể cho các kiểu SQL tương đương của chúng. Ví dụ, BINARY_INTEGER được lưu trữ trên một cơ sở dữ liệu DB2 như là INTEGER. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 45 của 56 developerWorks® ibm.com/developerWorks/vn/ 6. Bạn cũng có thể chạy một thường trình trong một gói PL/SQL trong Data Source Explorer hoặc trong Data Project Explorer. 7. ODS 2.2 cung cấp một trình gỡ rối thường trình PL/SQL cho DB2 LUW 9.7. Không giống như các trình gỡ rối thường trình SQL và Java trong ODS 2.2, trình gỡ rối PL/SQL cho DB2 không yêu cầu bạn thiết lập hoặc bắt đầu một trình quản lý của phiên gỡ rối. Trình quản lý của phiên gỡ rối được tích hợp với máy khách của trình gỡ rối và khởi động tự động. Xác định các giá trị đầu vào là dài hoặc nhị phân Hộp thoại Chỉ định các giá trị tham số (Specify Parameter Values) có thêm chức năng xác định và nhập khẩu chuỗi ký tự lớn, nhị phân và các giá trị XML. Bạn có thể soạn thảo một ô trong một hộp thoại thứ cấp bằng cách nhấn vào nút chấm lửng trong cột gần bên phải cho tham số đó, như trong Hình 48. Hình 48. Nhấn vào nút dấu chấm lửng để xác định giá trị dài Bạn có thể gõ một giá trị số hoặc chuỗi ký tự trong ô bảng. Đối với một giá trị chuỗi-ký tự, bạn không nhập các dấu phân cách chuỗi. (Ví dụ, bạn sẽ nhập my value, không phải 'my value'. Để đặt NULL cho một giá trị chuỗi-ký tự (phân biệt NULL với một chuỗi rỗng), nhấn thiết lập rỗng (Set to NULL). Giá trị giả *NULL* được hiển thị và một NULL được chuyển tới thường trình đó. Nếu nút dấu chấm lửng xuất hiện, bạn có thể nhấn vào nó để có được một hộp thoại lớn hơn để soạn thảo giá trị này. Đối với một kiểu dữ liệu XML, nhấn Browse... để chọn một tệp XML và xem nó trong tab XML Tree, như trong Hình 49. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 46 của 56 ibm.com/developerWorks/vn/ developerWorks® Hình 49. Chọn một tài liệu XML cho một tham số đầu vào Đối với một kiểu dữ liệu nhị phân, bạn phải nhập một chuỗi hệ đếm mười sáu không có các dấu phân cách. Bất kỳ tệp nào mà bạn chọn với Browse... sẽ được biến đổi sang hệ đếm mười sáu, như trong Hình 50. Hình 50. Chọn một tệp nhị phân cho một tham số đầu vào Các kiểu dữ liệu tham số được hiển thị trong hộp thoại chạy được máy chủ cơ sở dữ liệu chuẩn hóa. Các máy chủ DB2 chuẩn hóa các kiểu dữ liệu PL/SQL-cụ thể theo các kiểu SQL tương đương của chúng. Các máy chủ Oracle chuẩn hóa các kiểu con (Subtypes) theo các kiểu cơ bản của chúng. Ví dụ, INT được lưu trữ trên một cơ sở dữ liệu Oracle như NUMBER, sao cho hộp thoại chạy cho thấy NUMBER thay vì INT. Chi tiết lập trình Sử dụng các kiểu CURSOR trong PL/SQL Một thủ tục PL/SQL không hoàn toàn trả về tất cả các con trỏ mở, khi thực hiện các thủ tục SQL riêng trong DB2. Thay vào đó, bạn cần phải khai báo một tham số OUT của kiểu CURSOR hoặc REF Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 47 của 56 developerWorks® ibm.com/developerWorks/vn/ (như SYS_REFCURSOR) và mở nó bằng một truy vấn cơ sở dữ liệu. Giá trị đầu ra này được một ứng dụng JDBC thu nhận như là một tập kết quả. CURSOR Ví dụ, với một thủ tục PL/SQL trên Oracle: CREATE OR REPLACE PROCEDURE TEST_SYSREFCURSOR cursor_1 OUT SYS_REFCURSOR ) AS BEGIN OPEN cursor_1 FOR SELECT OBJECT_NAME FROM USER_PROCEDURES WHERE OBJECT_NAME LIKE 'SP0%'; END; ( Để cho phép chương trình gọi xử lý con trỏ, bạn phải để nó mở. Kiểm soát luồng Phần thân của một thường trình PL/SQL được chứa trong một khối PL/SQL, khối này bắt đầu bằng BEGIN và kết thúc bằng END tiếp theo là tên của thường trình theo tùy chọn. Trong phần thân của một thường trình PL/SQL, bạn có thể sử dụng các cấu trúc điều khiển tuần tự, lặp và rẽ nhánh. IF (condition) THEN...[ELSEIF (condition) THEN...][ELSE...] END IF; CASE condition WHEN value THEN...[WHEN value THEN...] ELSE...END CASE; FOR counter IN range LOOP...END LOOP; WHILE condition LOOP...END LOOP; WHILE...EXIT WHEN condition; Ngoài ra, PL/SQL cho phép bạn mã hóa một trình xử lý ngoại lệ ở phần cuối của một khối: EXCEPTION WHEN exception-name THEN ... [WHEN exception-name THEN ...] Xem "Xử lý các lỗi và các ngoại lệ" trong hướng dẫn của nhà phát triển hai ngày cơ sở dữ liệu Oracle (Oracle Database 2 Day Developer's Guide) với một danh sách các tên ngoại lệ phổ biến. Có một liên kết tới hướng dẫn này trong phần Tài nguyên. Ngoài ra, bạn có thể khai báo các ngoại lệ tuỳ chỉnh và nâng cao chúng theo cách lập trình: exception-name EXCEPTION; IF condition THEN RAISE exception-name; Các quy ước đặt tên Đối với PL/SQL, về cơ bản bạn có thể thực hiện theo chuẩn SQL liên quan đến việc đặt tên. Tất cả các tên cho các đối tượng Oracle có chiều dài tối đa là 30, ngoại trừ với tên cơ sở dữ liệu, có chiều dài tối đa là 8. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 48 của 56 ibm.com/developerWorks/vn/ developerWorks® Trong một câu lệnh SQL hoặc PL/SQL, một trình nhận dạng SQL có thể không có khoảng trống hay các ký tự đặc biệt. Các tên này được máy chủ cơ sở dữ liệu xếp theo chữ hoa, về cơ bản làm cho các tên này không phân biệt theo dạng chữ. Các tên trong SQL hoặc PL/SQL với các khoảng trống, các ký tự đặc biệt hoặc chữ thường phải được phân cách bằng các dấu ngoặc kép. Các dấu phân cách này không được lưu trữ trong danh mục cơ sở dữ liệu. Lược đồ này cho chúng ta hai định dạng tên: Định dạng SQL Định dạng danh mục myName MYNAME MYNAME MYNAME "myName" myName "my.name" my.name Trong ODS 2.2, bạn thấy các tên SQL theo định dạng danh mục trong Data Source Explorer và bạn nhìn thấy các tên SQL theo định dạng SQL trong Data Project Explorer. Các tên của các gói và các thường trình độc lập PL/SQL có thể được đánh giá. Trong DB2, từ hạn định là một tên lược đồ, tên này cũng là một từ định danh SQL. Trong Oracle, từ hạn định này là một tên chủ sở hữu. Từ hạn định này đứng trước tên đơn giản của đối tượng và được tách ra khỏi nó bằng một dấu chấm: "mySchema"."myName" Các gói PL/SQL giới thiệu thành phần khác, vì gói này là phần tử của lược đồ cơ sở dữ liệu, không là các thường trình trong gói đó. Để thử nghiệm một thường trình trong một gói, bạn có thể mô tả tên thường trình với tên gói trong câu lệnh CALL: CALL "mySchema"."myPackage"."myName"(); Oracle giới thiệu định dạng đặt tên khác, mà ODS 2.2 không hỗ trợ nó: các tên từ xa. Một tên từ xa có tên của cơ sở dữ liệu khác tiếp theo tên đơn giản được phân cách bằng một dấu @: CALL "mySchema"."myPackage"."myName"@otherDB(); Các hạn chế • Không phải tất cả chức năng PL/SQL được ODS 2.2 hỗ trợ: • Xem bảng các kiểu dữ liệu trong Phụ lục A đối với các kiểu dữ liệu không được hỗ trợ. • Đối với DB2, bạn phải khai báo các độ dài, các độ chính xác và các thang đo của các kiểu dữ liệu dùng như tham số trong thường trình. • IBM không hỗ trợ biên dịch và thực hiện câu lệnh PL/SQL cho các ấn bản sản phẩm sau: • DB2 Express • DB2 Express-C Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 49 của 56 developerWorks® • • • • • • ibm.com/developerWorks/vn/ • DB2 Personal Edition (Phiên bản cá nhân DB2) • DB2 không cho phép bạn tạo ra các hàm và các bộ kích hoạt PL/SQL trong một môi trường cơ sở dữ liệu được phân vùng. • Đối với DB2, một khai báo TYPE không được hỗ trợ trong một hàm, thủ tục, bộ kích hoạt hoặc khối ẩn danh. • Đối với DB2, tùy chọn FOR EACH STATEMENT không được hỗ trợ cho các bộ kích hoạt PL/ SQL. Không phải tất cả các chức năng đã hỗ trợ cho các thường trình SQL và Java cho DB2 được hỗ trợ cho PL/SQL: • Không có chức năng xuất khẩu hoặc triển khai dòng lệnh cho các đối tượng PL/SQL. • Không có mã xử lý lỗi được tạo ra như cho các thủ tục DB2 SQL. • Bạn không thể thêm một câu lệnh SQL trong trình thủ thuật khi tạo một thủ tục lưu sẵn PL/SQL. Mã được trình thủ thuật tạo ra không dựa vào việc truy cập cơ sở dữ liệu cụ thể của bạn, nhưng bị hạn chế với các khai báo về các tham số. • Không có sự trợ giúp nội dung nào trong trình soạn thảo SQL hoặc trình soạn thảo thường trình cho PL/SQL. • Không có sự hỗ trợ cho Các giá trị cài đặt hoạt động (Run Settings). • Không có trình thủ thuật nhập khẩu vào được cung cấp cho các gói, các thủ tục hoặc hàm PL/SQL • Bạn không thể sao chép hoặc kéo một gói PL/SQL vào trong một dịch vụ Web để tạo ra một hoạt động gọi thủ tục trong gói PL/SQL. Không phải tất cả chức năng DB2 hoặc Oracle được ODS 2.2 hỗ trợ: • Không có sự phát triển của các hàm Java nào trong một dự án phát triển dữ liệu với Oracle. • Không có sự phát triển của các bộ kích hoạt trong một một dự án phát triển dữ liệu, trừ trường hợp mà bạn có thể chạy một câu lệnh CREATE TRIGGER trong một kịch bản lệnh SQL trong trình soạn thảo SQL. • Không hỗ trợ các dự án phát triển dữ liệu cho các mô-đun DB2. • Không hỗ trợ cho các tên từ xa trên Oracle. ODS 2.2 không sử dụng khung nhìn Outline để hiển thị các thường trình trong một gói PL/ SQL. Bạn không thể sao chép hoặc kéo một thường trình độc lập từ một dự án hoặc cơ sở dữ liệu vào trong một gói PL/SQL trong một dự án. Bạn không thể kéo một thường trình trong một gói PL/SQL (hoặc từ một dự án hoặc từ một cơ sở dữ liệu) vào trong một thư mục Các thủ tục lưu sẵn (Stored Procedures) hoặc thư mục Hàm do người dùng định nghĩa (User-Defined Function). . Bạn có thể không nhất thiết phải sao chép các đối tượng giữa các cơ sở dữ liệu Oracle và DB2 mà không cần soạn thảo chúng do các sự khác nhau về chức năng. Nếu một ràng buộc cụ thể, ví dụ, không được máy hỗ trợ, nhưng ràng buộc ấy vẫn có thể được tạo ra, nó sẽ có. Một cảnh báo sẽ hiện trên khung nhìn SQL Results. Nếu không thể tạo được ràng buộc này, một lỗi sẽ xuất hiện. ODS 2.2 sao chép các đối tượng PL/SQL mà không dịch chúng cho dự án đích. Nếu một gói, thủ tục hoặc hàm Oracle PL/SQL chứa cú pháp hoặc chức năng không được hỗ trợ trên DB2, ODS 2.2 không thể thực hiện đối tượng đã được sao thành công. Bạn sẽ phải sửa vấn đề này trước khi bạn có thể triển khai một đối tượng PL/SQL thành công. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 50 của 56 ibm.com/developerWorks/vn/ developerWorks® • Bạn không thể sử dụng trình soạn thảo Data Object để tạo ra các vùng bảng BIGFILE tuy nhiên, bạn có thể sử dụng hành động của trình đơn Mở trình soạn thảo SQL (Open with SQL editor) để soạn thảo DDL đã tạo ra và thêm từ khóa BIGFILE. • Các trình phân tích cú pháp SQL hiện có không hỗ trợ PL/SQL. Trong ODS 2.2, các trình phân tích cú pháp được sử dụng để đánh giá trực tiếp mã nguồn của bạn trong các trình soạn thảo, để nhập khẩu và để giải thích các câu lệnh SQL trong trình thủ thuật. Một trình phân tích cú pháp PL/SQL không được bao gồm trong bản phát hành này; do đó, các trình soạn thảo có những hạn chế sau đây: • Các trình soạn thảo PL/SQL không cung cấp sự hỗ trợ nội dung hoặc đánh dấu các lỗi. Đối với một trình soạn thảo thường trình, việc xác nhận hợp lệ cú pháp là tắt theo mặc định; tuy nhiên, đối với trình soạn thảo kịch bản lệnh SQL, bạn nên xóa dấu chọn trên hộp chọn Xác nhận hợp lệ cú pháp của câu lệnh (Validate Statement Syntax) trong trình đơn của trình soạn thảo khi bạn soạn thảo một kịch bản có chứa PL/SQL. • Trình soạn thảo gói PL/SQL không đồng bộ các thay đổi giữa đặc tả và phần thân. • Để xóa một thường trình trong một gói PL/SQL, bạn cần phải soạn thảo gói PL/SQL và loại bỏ thường trình khỏi cả đặc tả và cả phần thân. • Bạn không thể cập nhật các tham số của thường trình PL/SQL độc lập trong tab Configuration của trình soạn thảo. • Trình thủ thuật thủ tục PL/SQL này không bao gồm trang các câu lệnh SQL (SQL statements). • Mặc dù có một trang các câu lệnh SQL trong trình thủ thuật hàm PL/SQL, nó không xác định kiểu trả về từ câu lệnh hoặc biểu thức SQL của bạn và nó không cung cấp các nút Import, Validate hoặc Create SQL. • Việc gỡ rối các thường trình PL/SQL có những hạn chế sau: • Việc gỡ rối các thường trình PL/SQL yêu cầu một kết nối khi sử dụng một trình điều khiển JDBC mỏng Oracle. • Bạn có thể gỡ rối một hàm PL/SQL chỉ khi nó ở trong một gói PL/SQL. Bạn không thể gỡ rối bất kỳ hàm độc lập nào, bất kể ngôn ngữ thực hiện của nó. • Bạn không thể cập nhật một phần tử LOB (biến LOB, trường LOB trong một biến hàng hoặc phần tử LOB trong một biến mảng) trong khi gỡ rối. • Trình gỡ rối sẽ hiển thị chỉ 32 K byte đầu tiên của một giá trị LOB. • Trình gỡ rối không hỗ trợ một mảng các hàng. Phụ lục A. Các kiểu dữ liệu được hỗ trợ Bảng sau đây cho thấy các kiểu dữ liệu mà ODS 2.2 hỗ trợ cho DB2 LUW 9.7 và Oracle 10g và 11g. Nếu kiểu dữ liệu được hỗ trợ, có nghĩa là bạn có thể chọn từ đồng nghĩa đầu tiên trong một trình thủ thuật cho kiểu dữ liệu của một kiểu tham số hoặc kiểu trả về và bạn có thể gõ bất cứ từ đồng nghĩa nào của nó trong trình soạn thảo thường trình. Các kiểu dữ liệu PL/SQL và DB2 từ định nghĩa cơ sở dữ liệu DB2 9.7 được ODS 2.2 hỗ trợ (chữ in đậm chỉ ra kiểu đó là duy nhất với DB2) • • • • BIGINT BINARY_INTEGER BLOB CHAR, CHARACTER Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Các kiểu dữ liệu PL/SQL từ định nghĩa cơ sở dữ liệu Oracle được ODS 2.2 hỗ trợ (chữ in đậm chỉ ra kiểu đó là duy nhất với PL/SQL) • • • • BINARY_DOUBLE BINARY_FLOAT BINARY_INTEGER CHAR, CHARACTER Trang 51 của 56 developerWorks® • CHAR FOR BIT DATA, CHARACTER FOR BIT DATA • CLOB, CHARACTER LARGE OBJECT, CHAR LARGE OBJECT • CURSOR1 • DATE2 • • • • • • • • • • DBCLOB DECFLOAT DECIMAL, DEC DOUBLE, DOUBLE PRECISION FLOAT GRAPHIC INTEGER, INT LONG RAW NCHAR, NATIONAL CHARACTER, NATIONAL CHAR NCLOB 3 • NUMBER4 • NUMERIC, NUM • NVARCHAR2, NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING, NCHAR VARYING • PLS_INTEGER • RAW • REAL • SMALLINT • SYS_REFCURSOR, REFCURSOR, REF CURSOR1 • • • • ibm.com/developerWorks/vn/ • • • • • • • • • • • • • • • • • • DATE DECIMAL, DEC DOUBLE PRECISION FLOAT INT, INTEGER LONG RAW NATURAL NUMBER NUMERIC PLS_INTEGER POSITIVE RAW REAL ROWID SIGNTYPE SMALLINT STRING 1 SYS_REFCURSOR, REFCURSOR, REF CURSOR • TIMESTAMP • TIMESTAMP WITH LOCAL TIME ZONE6 • TIMESTAMP WITH TIME ZONE • VARCHAR2, CHARACTER VARYING, CHAR VARYING, VARCHAR TIME TIMESTAMP VARCHAR, CHARACTER VARYING, CHAR VARYING VARCHAR FOR BIT DATA, CHARACTER VARYING FOR BIT DATA, CHAR VARYING FOR BIT DATA • VARCHAR25 • VARGRAPHIC Đây là những kiểu dữ liệu mà ODS 2.2 không hỗ trợ. Các kiểu dữ liệu PL/SQL không được hỗ trợ cho DB2 • • • • • • • • • • • • • • • • • • • • BINARY_DOUBLE BINARY_FLOAT BOOLEAN (JCC does not support BOOLEAN for PL/SQL) BFILE INTERVAL INTERVAL YEAR TO MONTH INTERVAL DAY TO SECOND LONG NATURALN POSITIVE POSITIVEN ROW SIGNTYPE SIMPLE_INTEGER STRING TABLE TIMESTAMP WITH LOCAL TIME ZONE TIMESTAMP WITH TIME ZONE VARRAY XMLTYPE Các kiểu dữ liệu PL/SQL không được hỗ trợ cho Oracle • BFILE7 • BLOB7 • BOOLEAN, PL/SQL BOOLEAN • CLOB7 • INTERVAL • INTERVAL YEAR TO MONTH • INTERVAL DAY TO SECOND • LONG • NATURALN8 • NCHAR, NATIONAL CHARACTER, NATIONAL CHAR • NCLOB7 • NVARCHAR2, NATIONAL CHARACTER VARYING, NATIONAL CHAR VARYING, NCHAR VARYING • POSITIVEN8 • ROW • SIMPLE_INTEGER8 • TABLE • UROWID • VARRAY • XMLTYPE7 Ghi chú: Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 52 của 56 ibm.com/developerWorks/vn/ developerWorks® 1. SYS_REFCURSOR và CURSOR được hỗ trợ chỉ cho các tham số OUT (trừ nơi mà chúng đã chuyển một giá trị từ một thường trình khác). Các hàm PL/SQL do người dùng định nghĩa phải có các trả về vô hướng; do đó, các kiểu dữ liệu này không được hỗ trợ cho các hàm PL/SQL do người dùng định nghĩa. 2. Khi biến đăng ký DB2_COMPATIBILITY_VECTOR được đặt cho kiểu dữ liệu DATE , DATE tương đương với TIMESTAMP (0). 3. Kiểu dữ liệu NCLOB không được hỗ trợ để sử dụng trong các câu lệnh PL/SQL hoặc trong các ngữ cảnh PL/SQL khi cơ sở dữ liệu không được định nghĩa như là một cơ sở dữ liệu Unicode. Trong cơ sở dữ liệu Unicode, kiểu dữ liệu NCLOB được ánh xạ tới một kiểu dữ liệu DBCLOB. 4. NUMBER được hỗ trợ cho SQL trên DB2 khi tham số cấu hình cơ sở dữ liệu number_compat được đặt là ON. 5. VARCHAR2 được hỗ trợ cho SQL trên DB2 khi tham số cấu hình cơ sở dữ liệu varchar2_compat được đặt là ON. 6. DẤU THỜI GIAN VỚI VÙNG THỜI GIAN ĐỊA PHƯƠNG (TIMESTAMP WITH LOCAL TIME ZONE) không được hỗ trợ như là một kiểu trả về. 7. BFILE, SIMPLE_INTEGER, BLOB, CLOB, NCLOB và XMLTYPE không được hỗ trợ cho Oracle bởi vì ODS không có quyền truy cập vào các lớp của trình bao (wrapper) mà các trình điều khiển Oracle yêu cầu nó. 8. NATURALN, POSITIVEN và SIMPLE_INTEGER là các kiểu con của PLS_INTEGER với một ràng buộc NOT NULL. Điều này ngăn không cho bạn sử dụng chúng như là các tham số OUT không liệt kê chúng để tạo các tham số của thường trình, nhưng bạn có thể sử dụng chúng như là IN hoặc IN OUT trong trình soạn thảo. Ngoài những hạn chế nêu trên, Data Studio không hỗ trợ các kiểu dữ liệu Oracle sau đây: • Các kiểu do người dùng định nghĩa • Các kiểu đối tượng • Các bảng lồng nhau REF • Các kiểu bất kỳ • ANYTYPE • ANYDATA • ANYDATASET • Các kiểu XML • Các kiểu dữ liệu URI • Gói URIFactory • Các kiểu khoảng trống • SDO_GEOMETRY • SDO_TOPO_GEOMETRY • SDO_GEORASTER • SI_Texture • SI_FeatureList • Các kiểu phương tiện • ORDAudio • ORDImage • ORDImageSignature Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 53 của 56 developerWorks® • • • • • • • ibm.com/developerWorks/vn/ ORDVideo ORDDoc SI_StillImage SI_Color SI_AverageColor SI_ColorHistogram SI_PositionalColor Các hạn chế của kiểu dữ liệu: • ODS 2.2 không có sự hỗ trợ cho các kiểu dữ liệu sưu tập PL/SQL (ROW và VARRAY) ngoài CURSOR. Bạn chỉ có thể khai báo về các kiểu trả về vô hướng cho các hàm PL/SQL. • Khi sao chép dữ liệu từ Oracle vào DB2, có một số hạn chế dựa trên các kiểu dữ liệu. Dữ liệu của các kiểu Oracle sau đây không thể được sao chép trong phiên bản này: • TIMESTAMP WITH TIME ZONE • TIMESTAMP WITH LOCAL TIME ZONE • TIMESTAMP (fractional-seconds-precision) • RAW • BFILE • XML • INTERVAL (không được hỗ trợ trên máy chủ DB2) • NUMBER (4, -1) [ở đây thang đo là âm] • NUMBER (5,10) [ở đây độ chính xác thấp hơn thang đo] • Các kiểu do người sử dụng định nghĩa • ROW và ARRAY (các kiểu ghép) • Chiều dài tối đa của một BLOB hoặc CLOB trên Oracle có thể là 4 GB, nhưng ODS 2.2 và DB2 có thể chỉ xử lý lên đến 2 GB. Các LOB dài hơn sẽ được cắt ngắn. • Khi sao chép dữ liệu từ DB2 vào Oracle, có thể có một số cắt ngắn: • DB2 DECFLOAT hỗ trợ một phạm vi lớn hơn FLOAT nhị phân của Oracle. • DB2 TIMESTAMP hỗ trợ độ chính xác lớn hơn (mặc dù nó không thể được sử dụng vì java.sql.Timestamp bị giới hạn ở một độ chính xác của phân đoạn thứ hai của 9). Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 54 của 56 ibm.com/developerWorks/vn/ developerWorks® Tài nguyên Học tập • Trung tâm thông tin quản lý dữ liệu tích hợp. • "Có gì mới và thoải mái trong Optim Development Studio 2.2:" bao gồm các thông tin về hỗ trợ pureQuery cho Oracle và các tính năng khác • "Chạy các ứng dụng Oracle trên DB2 9.7 với Linux, UNIX và Windows" cung cấp một sự khởi đầu tốt cho các tính năng tương thích của Oracle trong DB2 9.7. • Trang các giải pháp quản lý dữ liệu tích hợp. • Trang sản phẩm Optim Development Studio. • Tham khảo ngôn ngữ PL/SQL cơ sở dữ liệu Oracle, 1 Bản phát hành 11g. • Tham khảo các kiểu và các gói PL/SQL cơ sở dữ liệu Oracle, 1 Bản phát hành 11g. • Tham khảo ngôn ngữ SQL cơ sở dữ liệu Oracle, 1 Bản phát hành 11g. • Hướng dẫn của các nhà phát triển ứng dụng nâng cao cơ sở dữ liệu Oracle. • Tham khảo và hướng dẫn của các nhà phát triển JDBC cơ sở dữ liệu Oracle, 1 Bản phát hành 11g. • Hướng dẫn của các nhà phát triển ngày 2 cơ sở dữ liệu Oracle, 1 (11.1) Bản phát hành 11g. • Nền tảng Eclipse. • Các công cụ phát triển Java Eclipse. • Các dự án gỡ rối Eclipse. • Nền tảng của các công cụ dữ liệu Eclipse. • Duyệt qua cửa hàng sách công nghệ cho các sách về các chủ đề kỹ thuật này và khác. Lấy sản phẩm và công nghệ • Trang tải các trình điều khiển Oracle. • Tải về cơ sở dữ liệu mẫu GSDB cho DB2. • Tải về Optim Development Studio 2.2. Thảo luận • Xem Blog các chuyên gia quản lý dữ liệu tích hợp và dành tâm trí cho không gian cộng đồng IDM developerWorks. Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 55 của 56 developerWorks® ibm.com/developerWorks/vn/ Đôi nét về tác giả Thomas Sharp Thomas Sharp là một người Mỹ bản xứ có bằng tiến sĩ về tiếng Anh của Đại học Stanford. Ông đã làm việc cho IBM như là một thư ký kỹ thuật và kỹ sư phần mềm suốt 25 năm. Ông có 18 bằng sáng chế về tạo công cụ thường trình và các công nghệ giao diện người dùng. © Copyright IBM Corporation 2009 (www.ibm.com/legal/copytrade.shtml) Nhẫn hiệu đăng ký (www.ibm.com/developerworks/vn/ibm/trademarks/) Phát triển với PL/SQL trong IBM Data Studio 2.2 và Optim Development Studio 2.2 Trang 56 của 56