Tương thích của SQL trong CLPPlus

Hướng dẫn về công cụ dòng lệnh thống nhất cho người đang dùng DB2 hoặc đang di trú đến DB2.

CLPPlus cung cấp chức năng cốt yếu cho các tập lệnh di trú người dùng từ PL/SQL sang DB2 của IBM, cũng như nhiều tính năng mới cho phép người sử dụng DB2 và Informix để tạo ra các báo cáo được định dạng và thực thi các tác vụ thông thường một cách nhanh chóng và hiệu quả. Trong bài viết này, bạn hãy bắt đầu với CLPPlus và khám phá sự hỗ trợ cho các phương ngữ PL/SQL. Bạn cũng hãy tìm hiểu việc định dạng các báo cáo và thiết lập các kịch bản cho các tác vụ thông thường dễ dàng như thế nào. Cuối cùng, bài viết giải thích cách sử dụng AUTOTRACE với CLPPlus để có được thông tin để tinh chỉnh hiệu năng, bằng cách sử dụng tiện ích đệm SQL để phát triển các khối SQL lớn và sử dụng lưu trữ vào vùng đệm (spooling) để hỗ trợ trong trong việc phát triển các tập lệnh.

Mangesh Mangesh Shanbhag, Kỹ sư tin học, IBM

Mangesh ShanbhagMangesh là kỹ sư phần mềm trong biên chế, làm việc tại IBM Ấn Độ từ ba năm rưỡi nay. Kể từ đó, anh đã gắn bó với việc phát triển các công cụ quản lý thông tin tại phòng thí nghiệm phần mềm ở Ấn Độ. Anh có khoảng năm năm kinh nghiệm trong việc phát triển sản phẩm phần mềm. Hiện nay anh đang làm việc cho nhóm phát triển ứng dụng thông thường, ở đây anh đang phát triển tính năng báo cáo, tập lệnh và các tính năng tương thích SQL của CLPPlus. Anh có bằng Kỹ sư điện tử về Khoa học máy tính tại trường Đại học công nghệ Visvesvaraya (VTU Karnataka -Ấn Độ). Trong thời gian rỗi của mình, anh rất thích đọc sách và xem phim. Anh cũng là một fan hâm mộ thể thao cuồng nhiệt.



15 11 2012

Tổng quan

Công cụ trình xử lý dòng lệnh và hơn nữa, CLPPlus, cung cấp các tính năng cốt yếu cho người sử dụng di trú từ Oracle đến DB2 và cũng cho người sử dụng DB2 và Informix. Bằng cách sử dụng CLPPlus, người dùng đang di trú đến DB2 có thể chạy các tập lệnh SQL hiện có với DB2 cho Linux, UNIX và Windows với rất ít sửa đổi hoặc không có sửa đổi nào. Người hiện tại đang dùng DB2 cũng có thể tận dụng lợi thế của một số các tính năng mới và lợi ích của CLPPlus, chúng cho phép các nhà quản trị dữ liệu thực thi nhiều tác vụ thông thường một cách nhanh chóng và hiệu quả. CLPPlus là một công cụ đơn giản và hữu ích cho người sử dụng trong việc tạo ra các báo cáo có định dạng hoặc trong việc quản lý các tập lệnh PL/SQL hoặc SQL một cách quen thuộc. Ngoài ra, các tiện ích của trình biên tập lệnh tinh vi của nó làm cho nó trở thành công cụ dễ sử dụng để phát triển và gỡ lỗi các khối PL/SQL.

Là một phần của các cải tiến khả năng tương thích SQL trong DB2 9.7 của IBM cho Linux, UNIX và Windows, một loạt các tính năng tương thích cho phép người dùng chạy các ứng dụng Oracle trong môi trường DB2. Một phần của sản phẩm này là tiện ích dòng lệnh tương tác CLPPlus. CLPPlus là một công cụ dòng lệnh thống nhất cho tất cả các máy chủ dữ liệu IBM, bao gồm DB2 cho Linux, UNIX và Windows, DB2 cho z/OS và Informix. Cùng với sự hỗ trợ của nó cho SQL và các lệnh máy chủ nguyên sinh, CLPPlus đã phát triển theo thời gian, thu hẹp khoảng cách về tương thích SQL mà khách hàng đang di trú gặp phải và đã báo cáo để giúp chúng tôi hoàn thiện CLPPlus. Bây giờ CLPPlus là có khả năng xử lý việc các tập lệnh di trú của SQL với sự hỗ trợ toàn diện cho các tính năng tương thích SQL, bao gồm:

  • Phương ngữ PL/SQL
  • Định dạng báo cáo
  • Tạo tập lệnh
  • AUTOTRACE
  • Tiện ích bộ đệm SQL
  • Lưu trữ vào vùng đệm

Các phần sau đây cung cấp một cái nhìn tổng quan về các tính năng này với các ví dụ.


Khởi chạy CLPPlus

CLPPlus cung cấp một số tùy chọn mà bạn có thể xác định khi bạn gọi nó từ dòng lệnh. Điều này bao gồm cho phép chế độ im lặng, kết nối bằng cách sử dụng tệp tin cấu hình và chạy các tập lệnh SQL. Các tùy chọn này cung cấp sự linh hoạt để gọi ra CLPPlus đáp ứng nhu cầu của bạn.

Tập lệnh SQL có thể được chạy trong quá trình khởi động CLPPlus bằng cách sử dụng lệnh @, rất hữu ích cho việc chạy các thường trình lô công việc khi CLPPlus khởi chạy.

Khởi chạy CLPPlus với tùy chọn dòng lệnh -s[ilent] sẽ ngăn không cho hiển thị trên bàn điều khiển các thông điệp nhất định, chẳng hạn như thông tin về phiên bản, thông tin về bản quyền, dòng nhắc đợi lệnh và thông tin về kết nối. Các tùy chọn này có thể được sử dụng trong các kết hợp. Gọi ra CLPPlus ở chế độ im lặng, để thực thi tệp tin demo.sql bằng cách sử dụng lệnh @ : clpplus -silent @C:\demo.sql.

Chuỗi kết nối có thể được chỉ rõ trong quá trình gọi ra CLPPlus để thiết lập kết nối cơ sở dữ liệu trong phiên CLPPlus như trong ví dụ dưới đây. Thậm chí có thể chỉ rõ rằng CLPPlus sẽ nhận các thông tin kết nối từ tệp tin cấu hình bằng cách cung cấp tên dsn_alias trong lệnh gọi nó. Ví dụ dưới đây cho thấy cách gọi CLPPlus với chuỗi kết nối cơ sở dữ liệu.

Liệt kê 1. Gọi ra CLPPlus với thông tin kết nối
C:\>clpplus -nw manshanb/temp4now@localhost:500000.testdb

CLPPlus: Version 1.4
Copyright >c< 2009, IBM CORPORATION. All rights reserved.

Database Connection Information:
Hostname = localhost
Database server = DB2/NT SQL09074
SQL authorizaiton ID = manshanb
Local database alias = TESTDB
Port = 50000

SQL>

Khởi chạy CLPPlus trong chế độ verbose (-verbose) cho phép in các thông điệp bổ sung trong phiên CLPPlus, các thông điệp này bị ngăn chặn trong chế độ bình thường. Điều này sẽ cung cấp thêm thông tin bổ sung cho người sử dụng, đặc biệt hữu ích trong trường hợp lỗi của bất kỳ sự thực thi lệnh nào trong CLPPlus.

Việc chuyển hướng đầu vào và đầu ra được hỗ trợ trong CLPPlus, ở đây người dùng có thể chuyển hướng một tệp tin đến phiên CLPPlus để cung cấp các giá trị đầu vào, việc này là hữu ích trong việc chạy các tập lệnh SQL mà không cần sự can thiệp thủ công khi tập lệnh yêu cầu cung cấp các giá trị đầu vào trong thời gian chạy thực. Người dùng thậm chí có thể chuyển hướng đầu ra của CLPPlus đến một tệp tin bằng cách sử dụng chuyển hướng đầu ra trong CLPPlus. Ví dụ dưới đây cho thấy việc sử dụng chuyển hướng đầu vào trong CLPPlus. Tệp tin input.txt đang được chuyển giao cho phiên CLPPlus, tệp này chứa giá trị đầu vào mà tập lệnh demo.sql cần.

Liệt kê 2. Chuyển hướng đầu vào trong CLPPlus
C:\>clpplus @c:\demo.sql <c:\input.txt  

CLPPlus: Version 1.4
Copyright >c< 2009, IBM CORPORATION. All rights reserved.

Database Connection Information:
Hostname = localhost
Database server = DB2/NT SQL09074
SQL authorization ID = manshanb
Local database alias = SAMPLE
Port = 50000

Enter a value for variable 1:
Original statement: select * from employee where firstnme='&1'
New statement with substitutions: select * from employee where firstnme='MICHAEL'

FIRSTNME                                        SALARY
-------------------------- ---------------------------
MICHAEL                                        10000.0
C:\>

Dữ liệu mẫu

Dữ liệu mẫu được mô tả trong bài viết này là một phần của cơ sở dữ liệu SAMPLE trong DB2, đi kèm với sản phẩm.

CLPPlus cũng cung cấp phương tiện để chạy các tập lệnh của người sử dụng một cách tự động trên mỗi lần đăng nhập của CLPPlus. Điều này có thể được thực thi theo hai cách: hoặc bằng cách thiết lập biến môi trường CLPPLUS_USER_STARTUP_SCRIPT nhận giá trị là tên tệp tin chứa tập lệnh cùng với đường dẫn hoặc bằng cách đặt tệp tin chứa tập lệnh với tên là .clpplusrc trong thư mục nhà của hệ điều hành. Điều này là hữu ích khi muốn cho chạy một tập hợp nhiều lệnh lúc khởi động, mỗi khi gọi CLPPlus.


Hỗ trợ phương ngữ PL/SQL

CLPPlus hỗ trợ thực thi tất cả các loại tập lệnh PL/SQL được hỗ trợ bởi máy chủ DB2 cho LUW. Các lệnh như tạo ra và hủy gói, thủ tục, hàm, trigger v.v.. đều có thể được thực thi rất dễ dàng trong CLPPlus. Các khối lệnh PL/SQL như DECLARE, BEGIN, END có thể được thực thi trong CLPPlus như các khối vô danh. Ví dụ sau đây cho thấy việc thực thi của một khối PL/SQL đơn giản trong CLPPlus.

Liệt kê 3. Thực thi khối PL/SQL
SQL> set serveroutput on
SQL> begin
  2  dbms_output.put_line('plsql demo');
  3  end;
  4  /

plsql demo

DB250000I: The command completed successfully.

Các khối vô danh cũng có thể được thực hiện bằng cách sử dụng lệnh thực thi trong CLPPlus. Lệnh thực thi được sử dụng chủ yếu để thực thi câu lệnh PL/SQL trên một dòng như trong ví dụ dưới đây. Lệnh này giúp nới lỏng việc thực thi câu lệnh PL/SQL trên một dòng, không cần thiết phải gói chúng bên trong một khối BEGIN END. Trong ví dụ dưới đây, biến var1 được gán một giá trị varchar bằng cách sử dụng lệnh exec.

Liệt kê 4. Thực thi PL/SQL trên một dòng
SQL> variable var1 varchar
DB250000I: The command completed successfully.

SQL> exec :var1:='manshanb';
DB250000I: The command completed successfully.

Các thủ tục của PL/SQL có thể được thực thi trong CLPPlus bằng cách sử dụng lệnh CALL. Lệnh exec cũng có thể được sử dụng để thực thi các thủ tục như trong ví dụ dưới đây.

Liệt kê 5. Liệt kê 5. Thực thi PL/SQL bằng cách sử dụng lệnh call và exec
SQL> call dbms_output.put_line('plsql demo');
plsql demo
DB250000I: The command completed successfully.

SQL> exec dbms_output.put_line('plsql demo');
plsql demo
DB250000I: The command completed successfully.

CLPPlus hỗ trợ in ấn nội dung bộ đệm thông điệp DBMS_OUTPUT ra bàn điều khiển của CLPPlus bằng cách sử dụng tiện ích đầu ra của máy chủ. Người sử dụng có thể kích hoạt tiện ích này bằng cách sử dụng lệnh set như trong ví dụ dưới đây. Điều này có thể hữu ích trong việc gỡ lỗi các khối hoặc các thủ tục PL/SQL bằng cách lấy thông điệp đầu ra của máy chủ được đưa vào trong các khối PL/SQL bằng cách sử dụng lệnh DBMS_OUTPUT.PUT_LINE().

Liệt kê 6. Đầu ra của máy chủ bên trong khối PL/SQL
SQL> set serveroutput on
SQL> Begin
   2	For i In 1..10 Loop
   3		Dbms_Output.Put_Line('Count '||i);
   4 	End Loop;
   5 End;
   6 /

Count 1
Count 2
Count 3
Count 4
Count 5
Count 6
Count 7
Count 8
Count 9
Count 10

DB250000I: The command completed successfully.

Định dạng báo cáo

CLPPlus hỗ trợ một số tính năng định dạng báo cáo, chẳng hạn như lệnh column, lệnh set, tiêu đề trang, tiêu đề báo cáo, lệnh break và lệnh compute, các tính năng này cung cấp cho người sử dụng các phương tiện tạo ra và định dạng báo cáo nâng cao. Người dùng có thể sử dụng các tùy chọn này để tùy chỉnh các báo cáo theo các nhu cầu nghiệp vụ. Trong phần này chúng ta sẽ khám phá các tính năng quan trọng được hỗ trợ bởi CLPPlus.

Lệnh column

Lệnh column cung cấp một số tùy chọn có thể được sử dụng để định cấu hình một cột cụ thể trong báo cáo. Lệnh column được định nghĩa cho một tên cột cần phải được định cấu hình. Các tùy chọn ON và OFF có thể được sử dụng để kiểm soát việc bật hay tắt lệnh column. Lệnh ? column sẽ cung cấp các chi tiết về tất cả các tùy chọn được hỗ trợ bởi lệnh column.

Tùy chọn format được sử dụng để định dạng các giá trị cột kiểu numeric và varchar. Để định dạng chiều rộng của một chuỗi ký tự, hãy viết A kèm một số nguyên. Các giá trị chuỗi dài quá chiều rộng cột đã định này được cắt ngắn bớt hay gói gọn, tùy theo dùng tùy chọn nào, TRUNCATED hay WRAPPED, xác định rõ kèm lệnh column. Các giá trị số có thể được định dạng với một chuỗi định dạng như trong ví dụ. Tùy chọn justify được sử dụng để căn thẳng các giá trị cột theo lề phải, lề trái hay chính giữa của một cột. Ví dụ dưới đây cho thấy việc sử dụng các tùy chọn cột này với bảng nhân viên.

Liệt kê 7. Các tùy chọn định dạng cột
SQL>column salary format 99999.99
SQL>column lastname format A6
SQL>firstnme, lastname, salary from employee ;

FIRSTNME     LASTNA      SALARY
------------ ------ -----------
CHRISTINE    HAAS      ########
MICHAEL      THOMPS    94250.00
             ON

SALLY        KWAN      98250.00
JOHN         GEYER     80175.00
IRVING       STERN     72250.00
EVA          PULASK    96170.00
             I

EILEEN       HENDER    89750.00
             SON

THEODORE     SPENSE    86150.00
             R

VINCENZO     LUCCHE    66500.00
             SSI

SEAN         O'CONN    49250.00
             ELL

Một số các tùy chọn cột khác hữu ích trong định dạng các báo cáo được đưa ra dưới đây. Tiêu đề cột có thể được thay đổi với tùy chọn HEADING bằng cách viết rõ đoạn văn bản dùng làm tiêu đề. Tùy chọn PRINT | NOPRINT có thể được sử dụng để kiểm soát việc in ra hay không in ra một cột cụ thể. Các giá trị NULL trong cột có thể được thay thế bằng một đoạn văn bản người dùng định nghĩa bằng cách sử dụng tùy chọn NULL TEXT. Tùy chọn FOLD_BEFORE và FOLD_AFTER có thể được sử dụng để xuống dòng mới, trước khi hoặc sau khi in các giá trị cột.

Ví dụ dưới đây mô tả cách sử dụng của tùy chọn HEADING trong việc thay đổi tiêu đề của một cột khi hiển thị bảng kết quả. Trong ví dụ này, tùy chọn FORMAT được sử dụng để định dạng một cột varchar và một cột thập phân, tương ứng là ENAME và SAL.

Liệt kê 8. Column formatting options
SQL> COLUMN ENAME HEADING EMP_NAME FORMAT A7 WRAP
SQL> COLUMN SAL FORMAT $9999.99
SQL> select ename, deptno, sal from emptable;

EMP_NAM      DEPTNO         SAL
------- ----------- -----------
SMITH            20     $800.00
ALLEN            30    $1600.00
WARD             30    $1250.00
JONES            20    $2975.00
MARTIN           30    $1250.00
BLAKE            30    ########
CLARK            10    $2450.00
SCOTT            20    $3000.00
KING             10    $5000.00
MANGESH          30    $1500.00
SHA

Các biến OLD_VALUE và NEW_VALUE được sử dụng để giữ các giá trị cũ và mới của cột tại bất kỳ mốc thời gian nào trong khi tạo ra báo cáo. Những giá trị này chủ yếu được sử dụng trong các tiêu đề của trang. Tùy chọn LIKE cho phép sao chép các định dạng và hiển thị các thuộc tính giữa hai cột.

Tiêu đề trang và tiêu đề báo cáo

CLPPlus hỗ trợ việc in tiêu đề trang và báo cáo, các tiêu đề rất hữu ích trong việc tạo ra báo cáo. ttitle và BTITLE được sử dụng để cho phép in các tiêu đề đỉnh trang và đáy trang một cách tương ứng. Tương tự như vậy, REPHEADER và REPFOOTER được sử dụng để cho phép in đoạn văn bản ở đầu trang và chân trang trong các báo cáo. Văn bản tiêu đề có thể được căn trái, căn phải và căn chính giữa trang theo nhu cầu của người sử dụng. Tiêu đề trang cũng có thể được định cấu hình để hiển thị số trang trong các báo cáo bằng cách sử dụng tùy chọn PGNO. Cột new_value và giá trị biến old_value có thể được hiển thị như là một phần của văn bản tiêu đề TTITLE và btitle một cách tương ứng. Giá trị SKIP n được sử dụng để nhảy qua n dòng tiếp theo sau dòng hiển thị tiêu đề. Ví dụ dưới đây cho thấy việc sử dụng tiêu đề trang.

Liệt kê 9. Tiêu đề trang
SQL> ttitle right 'Employee Data'
SQL> btitle center 'IBM Corporation'
SQL> select empno, firstnme, lastname, edlevel, salary, bonus from emp ;
SQL> set linesize 70

                                                        Employee Data

EMPNO  FIRSTNME     LASTNAME        EDLEVEL      SALARY       BONUS
------ ------------ --------------- ------- ----------- -----------
000010 CHRISTINE    HAAS                 18   152750.00     1000.00
000020 MICHAEL      THOMPSON             18    94250.00      800.00
000030 SALLY        KWAN                 20    98250.00      800.00
000050 JOHN         GEYER                16    80175.00      800.00
000060 IRVING       STERN                16    72250.00      500.00
000070 EVA          PULASKI              16    96170.00      700.00
000090 EILEEN       HENDERSON            16    89750.00      600.00
000100 THEODORE     SPENSER              14    86150.00      500.00
000110 VINCENZO     LUCCHESSI            19    66500.00      900.00
000120 SEAN         O'CONNELL            14    49250.00      600.00
000130 DELORES      QUINTANA             16    73800.00      500.00

                            IBM Corporation

                                                        Employee Data

EMPNO  FIRSTNME     LASTNAME        EDLEVEL      SALARY       BONUS
------ ------------ --------------- ------- ----------- -----------
000210 WILLIAM      JONES                17    68270.00      400.00
000220 JENNIFER     LUTZ                 18    49840.00      600.00
000230 JAMES        JEFFERSON            14    42180.00      400.00
000240 SALVATORE    MARINO               17    48760.00      600.00
000250 DANIEL       SMITH                15    49180.00      400.00
000260 SYBIL        JOHNSON              16    47250.00      300.00
000270 MARIA        PEREZ                15    37380.00      500.00
000280 ETHEL        SCHNEIDER            17    36250.00      500.00
000290 JOHN         PARKER               12    35340.00      300.00
000300 PHILIP       SMITH                14    37750.00      400.00
000310 MAUDE        SETRIGHT             12    35900.00      300.00

                            IBM Corporation

Các lệnh BREAK và COMPUTE

Hai lệnh quan trọng được sử dụng cho việc tạo ra báo cáo là BREAK và COMPUTE. Các lệnh này được sử dụng chung với nhau trong quá trình tạo ra báo cáo để định dạng báo cáo dựa trên các giá trị cột. Sử dụng chúng cho phép các báo cáo được chia thành nhiều tập hợp các bản ghi liên quan, làm cho báo cáo dễ đọc hơn và được sắp xếp.

Lệnh BREAK có thể được sử dụng để chia báo cáo thành tập hợp các bản ghi dựa trên giá trị của cột cụ thể. Lệnh Compute có thể được sử dụng để thực thi một số tính toán trên tập hợp các bản ghi đó. Ví dụ sau đây cho thấy việc sử dụng các lệnh này trong CLPPlus.

Liệt kê 10. Các lệnh BREAK và COMPUTE
SQL> BREAK ON EDLEVEL SKIP 2

SQL> COMPUTE MAX LABEL MAX_SAL of SALARY on EDLEVEL

SQL> SELECT EDLEVEL, EMPNO, FIRSTNME, SALARY FROM EMPLOYEE ORDER BY EDLEVEL;

EDLEVEL EMPNO  FIRSTNME          SALARY
------- ------ ------------ -----------
     12 000290 JOHN            35340.00
     12 000310 MAUDE           35900.00
     12 200310 MICHELLE        35900.00
*******                     -----------
MAX_SAL                        35900.00



     14 000100 THEODORE        86150.00
     14 000120 SEAN            49250.00
     14 000230 JAMES           42180.00
     14 200120 GREG            39250.00
     14 200330 HELENA          35370.00
*******                     -----------
MAX_SAL                        86150.00
...
...

Để biết thêm thông tin về các tính năng định dạng báo cáo của CLPPlus, hãy xem bài viết "Để biết thêm thông tin về các tính năng định dạng báo cáo của CLPPlus, hãy xem bài viết."


Hỗ trợ tạo tập lệnh

Các tính năng như các biến kết buộc, các biến thay thế, WHENEVER SQLERROR, WHENEVER OSERROR v.v.. cùng nhau tạo thành sự hỗ trợ tạo tập lệnh trong CLPPlus. Chúng ta có thể sử dụng các tính năng này trong việc phát triển các tập lệnh SQL, và do đó sử dụng rất dễ dàng các biến trên máy khách và máy chủ để điều khiển luồng chảy thực thi tập lệnh dựa trên việc xác định rõ hành động phải làm khi xuất hiện các lỗi SQL và lỗi hệ điều hành. Các biến môi trường cũng có thể được truy cập trong các tập lệnh của CLPPlus theo cách tương tự, qua nhiều hệ điều hành. Trong phần này chúng ta sẽ bàn về một số tính năng trong các tính năng này được CLPPlus hỗ trợ.

Biến kết buộc

Sự hỗ trợ các biến kết buộc là một tính năng độc đáo trong CLPPlus. Biến được khai báo trên máy khách CLPPlus và có thể được sử dụng như là biến của máy chủ trong các khối SQL và PL/SQL. Lệnh exec có thể được sử dụng để khởi tạo một giá trị cho biến. Nó cũng có thể được khởi tạo giá trị bằng cách gói trong khối Begin-End. CLPPlus hỗ trợ các biến với nhiều kiểu dữ liệu khác nhau, bao gồm số nguyên, số thập phân, varchar, varchar2, kiểu số, kiểu Boolean, hàng, mảng của các hàng, con trỏ v.v.. Khả năng của nó được sử dụng liền mạch giữa máy khách và máy chủ có nghĩa là bạn có thể sử dụng cùng một biến qua nhiều lần thực thi. Lệnh PRINT có thể được sử dụng để hiển thị các giá trị của biến trong CLPPlus.

Liệt kê 11. Các biến kết buộc
SQL> variable var1 varchar2
DB250000I: The command completed successfully.

SQL> variable var2 number
DB250000I: The command completed successfully.

SQL> exec :var1:='manshanb' ;
DB250000I: The command completed successfully.

SQL> begin
  2  :var2:=15500.50;
  3  end;
  4  /

DB250000I: The command completed successfully.

SQL> print var1
'manshanb'

SQL> print var2
15500.50

SQL> select firstnme from employee where salary=:var2 ;

FIRSTNME            
---------------
Michael

Các biến rất có hiệu quả trong các lời gọi thủ tục, ở đây bạn có thể nắm bắt được giá trị của tham số OUT đưa vào một biến và chúng ta có thể chuyển giao biến làm một giá trị của tham số INPUT cho một lời gọi thủ tục, như trong ví dụ dưới đây. Tham số INOUT trong lời gọi thủ tục có thể được xử lý bằng cách sử dụng chỉ một biến, biến này sẽ hành xử như cả hai tham số IN và OUT.

Liệt kê 12. Các biến kết buộc trong lời gọi thủ tục
SQL> CREATE OR REPLACE PROCEDURE TESTPROC ( IN P1 INTEGER, INOUT P2 INTEGER, 
   - OUT P3 VARCHAR2(20))
   2 BEGIN
   3 	SET P2 = P1+P2 ;
   4	SET P3 = 'Result is ' || P2;	
   5 END ;
   6 /

DB250000I: The command completed successfully.

SQL>  var p1 integer
DB250000I: The command completed successfully.

SQL>  var p2 integer
DB250000I: The command completed successfully.

SQL>  var p3 varchar2
DB250000I: The command completed successfully.

SQL> exec :p1:=100;
DB250000I: The command completed successfully.

SQL> exec :p2:=50;
DB250000I: The command completed successfully.

SQL> call testproc(:p1, :p2, :p3);
DB250000I: The command completed successfully.

SQL> print p1
100

SQL> print p2
150

SQL> print p3
'Result is 150'

Các biến thay thế

Không giống như biến kết buộc, biến thay thế được xử lý tại phía khách và giá trị của nó sẽ được thay thế trước khi đệ trình lệnh để thực thi. Nó có thể được sử dụng như cái giữ chỗ để lưu trữ các giá trị chuỗi ký tự, giá trị này có thể được sử dụng về sau chừng nào mà phiên vẫn còn hoạt động. Biến thay thế có thể được định nghĩa bằng cách sử dụng lệnh define và được truy cập bằng cách sử dụng ký hiệu &, tiếp theo là tên biến. Ví dụ dưới đây cho thấy việc sử dụng biến thay thế trong CLPPlus.

Liệt kê 13. Trình diễn biến thay thế
SQL> define name='MICHAEL'

SQL> select firstnme, salary from employee where firstnme='&name';

Original statement:select firstnme, salary from employee where firstnme='&name'
New statement with substitutions:select firstnme, salary from employee where 
firstnme='MICHAEL'

FIRSTNME              SALARY
--------------- ------------
MICHAEL                10000

Nếu biến được truy cập không được định nghĩa, CLPPlus nhắc và đợi nhập giá trị cho biến đó, như hình dưới đây.

Liệt kê 14. Trình diễn biến thay thế
SQL> select firstnme, salary from employee where salary > &sal;
Enter a value for variable sal: 15000

Original statement:select firstnme, salary from employee where salary > &sal
New statement with substitutions:select firstnme, salary from employee where 
salary > 15000

FIRSTNME                              SALARY
-------------------- -----------------------
MANSHANB                               15500
JOE                                    25000

Người dùng cũng có thể chấp nhận giá trị cho biến trong thời gian chạy thi hành bằng cách sử dụng lệnh ACCEPT như trong ví dụ dưới đây. Điều này rất hữu ích trong việc nhắc và đợi nhập giá trị cho biến cần đầu vào từ người sử dụng trong quá trình chạy thực thi động một tập lệnh.

Liệt kê 15. Lệnh ACCEPT
SQL> accept USER_ID
Enter a value for variable USER_ID: manshanb

SQL> define
DEFINE USER_ID = manshanb

CLPPlus cũng hỗ trợ chuyển các biến môi trường hoặc biến Shell làm đối số đến tập lệnh trong khi gọi CLPPlus, sau đó các biến này được chuyển đổi thành biến thay thế được đặt tên theo vị trí của chúng và có thể được truy cập bằng cách sử dụng dấu &, tiếp theo là vị trí của chúng. Tương tự như vậy, thậm chí có thể chuyển các giá trị như là đối số cho tập lệnh. Ví dụ dưới đây cho thấy tính năng này.

Liệt kê 16. Biến Shell như là biến thay thế
C:\>Set DEPT=E32 

C:\>clpplus -s @c:\demo.sql %DEPT% 10000

Original statement:select firstnme, salary from employee where edlevel='&1' and 
salary > &2
New statement with substitutions:select firstnme, salary from employee where edlevel='E32'
and salary > 10000

FIRSTNME                 SALARY
--------------- ---------------
MICHAEL                   15500
JOE                       11100
manshanb                  20000

Tập lệnh demo.sql chứa các câu lệnh SQL sau đây:

select firstnme, salary from employee where edlevel='&1' and salary > &2 ;

Biến môi trường DEPT và giá trị 10000 đã được chuyển như là đối số đến tập lệnh demo.sql, tập lệnh này dùng các đối số ấy dưới dạng biến thay thế.

Xử lý lỗi

Lỗi xảy ra trong quá trình thực thi các tập lệnh trong CLPPlus có thể được bẫy và một hành động cụ thể có thể được thực hiện bằng cách sử dụng các lệnh được hỗ trợ WHENEVER SQLERROR và WHENEVER OSERROR. Khi sử dụng các lệnh này, chúng ta có thể kiểm soát hành vi của CLPPlus bằng cách xác định rõ các hành động được thực hiện như EXIT hoặc CONTINUE bất cứ khi nào lỗi xảy ra. Chúng ta cũng có thể chọn hành động giao kết (commit) hoặc cuộn ngược lại (roll back) các giao dịch chưa được giao kết khi có lỗi SQL hoặc lỗi hệ điều hành bằng cách sử dụng tùy chọn COMMIT hoặc ROLLBACK. Trong trường hợp lệnh EXIT, chúng ta có thể trả về một mã trả về phụ thuộc vào hệ điều hành dựa trên kịch bản lỗi..

Ví dụ sau đây cho thấy hành vi của lệnh WHENEVER SQLERROR CONTINUE. Tại đây khi có lỗi, dấu nhắc CLPPlus được trả về và tiếp tục chờ đợi người dùng nhập đầu vào.

Liệt kê 17. Lệnh WHENEVER SQLERROR
SQL> whenever sqlerror continue

SQL> select * from nonexistingtable;
SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name.

SQL>

Chúng ta cũng có thể giao kết, cuộn ngược lại hoặc không có hành động nào mỗi khi có lỗi SQL xuất hiện.

Liệt kê 18. Các kiểu hành động WHENEVER SQLERROR
SQL> whenever sqlerror continue commit 

SQL> whenever sqlerror continue rollback

SQL> whenever sqlerror continue none

Ví dụ dưới đây trình bày cách sử dụng tùy chọn EXIT khi có lỗi SQL để thoát khỏi ứng dụng CLPPlus.

Liệt kê 19. Hành động WHENEVER SQLERROR exit
SQL> whenever sqlerror exit

SQL> select * from nonexistingtable;
SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name.

C:\>

Ví dụ sau đây xác định mã lỗi trả về trong EXIT. Hành vi này là giống hệt với lệnh EXIT của CLPPlus.

Liệt kê 20. Mã EXIT khi xảy ra WHENEVER SQLERROR
SQL> whenever sqlerror exit failure

SQL> select * from nonexistingtable;
SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name.

C:\echo %errorlevel%
1

Người dùng cũng có thể chỉ rõ giá trị của biến thay thế sẽ được trả về khi thoát ra. Ví dụ sau đây cho thấy hành vi này.

Liệt kê 21. Giá trị của biến thay thế được trả về bất cứ khi nào lỗi SQL xảy ra
SQL> define exit_value=6

SQL> whenever sqlerror exit exit_value

SQL> select * from nonexistingtable;
SQL0204N "SCHEMA.NONEXISTINGTABLE" is an undefined name.

C:\echo %errorlevel%
6

Theo hỗ trợ của lệnh EXIT của CLPPlus, chúng ta có thể xác định rõ có giao kết không hay là cuộn ngược lại các giao dịch bất cứ khi nào lỗi xảy ra. Các lệnh sau đây trình diễn các hành động giao kết và cuộn ngược lại bất cứ khi nào lỗi SQL xảy ra:

whenever sqlerror exit 2 commit 
whenever sqlerror continue rollback

Ví dụ sau đây cho thấy hành vi của CLPPlus khi có lỗi của hệ điều hành với mã lỗi thoát ra.

Liệt kê 22. Lệnh WHENEVER OS ERROR
SQL> whenever oserror exit -1

SQL> get c:\nonexistingfile.sql
DB250204E: An attempt to locate a file 'c:\\nonexistingfile.sql' failed. The command 
cannot be processed.

c:\>echo %errorlevel%
-1

Ví dụ sau đây cho thấy hành vi của lệnh khi dùng lệnh CONTINUE với tùy chọn COMMIT.

Liệt kê 23. Lệnh WHENEVER OS ERROR với lệnh CONTINUE COMMIT
SQL> whenever oserror continue commit

SQL> get c:\nonexistingfile.sql
DB250204E: An attempt to locate a file 'c:\\nonexistingfile.sql' failed. The command 
cannot be processed.

SQL>

AUTOTRACE

AUTOTRACE cung cấp thông tin về kế hoạch truy cập mà trình tối ưu hóa đã lựa chọn trong quá trình thực hiện một câu lệnh, cùng với một số giá trị thống kê chính cho sự thực thi cụ thể được ghi lại bởi máy chủ. Đầu ra của AUTOTRACE có thể được sử dụng để tối ưu hóa các truy vấn SQL dựa trên phân tích dữ liệu, việc phân tích dữ liệu này hữu ích trong việc tinh chỉnh hiệu năng của các truy vấn SQL, hoặc trong việc chẩn đoán các biến đổi hiệu năng của ứng dụng.

SET AUTOT[RACE] { OFF | ON | TRACE[ONLY] } [EXP[LAIN]] [STAT[ISTICS]]

Khi bật tùy chọn AUTOTRACE thành ON sẽ cho phép hiển thị thông tin giải thích và thống kê cho mỗi câu lệnh được thực thi trong phiên đó cùng với kết quả truy vấn cho đến khi AUTOTRACE bị vô hiệu hóa. Các tùy chọn EXPLAIN (giải thích) và STATISTICS (thống kê) cho phép hiển thị giải thích kế hoạch và các thông tin thống kê một cách tương ứng. Thông tin thống kê bao gồm thống kê về mạng, chi phí, thông tin khóa, sắp xếp, nhóm trực đợi vào/ra, số hàng đã đọc, số hàng đã sửa đổi và hàng trả về v.v.. tạm kể ra như vậy. Tùy chọn TRACEONLY vô hiệu hóa hiển thị các kết quả thực hiện truy vấn.

Ví dụ dưới đây cho thấy đầu ra khi tùy chọn AUTOTRACE được bật lên.

Liệt kê 24. Tùy chọn AUTOTRACE
SQL> SET AUTOTRACE ON

SQL> SELECT EMPNO, FIRSTNME, LASTNAME, WORKDEPT, PHONENO FROM EMPLOYEE 
     WHERE SALARY=152750 ;

EMPNO  FIRSTNME     LASTNAME        WORKDEPT PHONENO
------ ------------ --------------- -------- -------
000010 CHRISTINE    HAAS            A00      3978   



EXPLAIN PLAN
-------------------------

    ID TYPE            OBJECT_SCHEMA        OBJECT_NAME         
------ --------------- -------------------- --------------------
PREDICATE_TEXT                                    
--------------------------------------------------
     1 RETURN                                                   
                                                  

     2 TBSCAN          MANSHANB             EMPLOYEE            
(Q1.SALARY = +0152750.00)                         




STATISTICS
---------------------------------
COMPILATION_TIME      =  195000
ISOLATION_LEVEL       =  CS
ROWS_READ             =  42
ROWS_RETURNED         =  1
ROWS_MODIFIED         =  0
TOTAL_SORTS           =  0
IN_MEMORY_SORTS       =  0
LOCK_WAITS            =  0
LOCK_ESCALS           =  0
LOCK_TIMEOUTS         =  0
POOL_READS            =  1
POOL_WRITES           =  0
QUERYOPT              =  5
ESTIMATED_COST        =  8
TOTAL_COST            =  7.6209
NETWORK_TRIPS         =  2
BYTES_SENT            =  505
BYTES_RECEIVED        =  1215

Ví dụ dưới đây cho thấy việc sử dụng tùy chọn AUTOTRACE với kế hoạch EXPLAIN (giải thích) được kích hoạt, cùng với kết quả truy vấn. Điều này vô hiệu hóa hiển thị các thông tin thống kê.

Liệt kê 25. Tùy chọn AUTOTRACE với tùy chọn EXPLAIN được bật lên
SQL> SET AUTOTRACE ON EXPLAIN

SQL> SELECT EMPNO, FIRSTNME, LASTNAME FROM EMPLOYEE WHERE SALARY=152750 ;

EMPNO  FIRSTNME     LASTNAME       
------ ------------ ---------------
000010 CHRISTINE    HAAS           


EXPLAIN PLAN
-------------------------

    ID TYPE            OBJECT_SCHEMA        OBJECT_NAME         
------ --------------- -------------------- --------------------
PREDICATE_TEXT                                    
--------------------------------------------------
     1 RETURN                                                   
                                                  

     2 TBSCAN          MANSHANB             EMPLOYEE            
(Q1.SALARY = +0152750.00)

Ví dụ dưới đây trình diễn việc sử dụng AUTOTRACE với tùy chọn TRACEONLY. Với thiết lập này, việc hiển thị kết quả truy vấn bị vô hiệu hóa.

Liệt kê 26. Tùy chọn AUTOTRACE với chế độ TRACEONLY
SQL> SET AUTOTRACE TRACEONLY

SQL> SELECT * FROM EMPLOYEE WHERE SALARY=152750 ;


EXPLAIN PLAN
-------------------------

    ID TYPE            OBJECT_SCHEMA        OBJECT_NAME         
------ --------------- -------------------- --------------------
PREDICATE_TEXT                                    
--------------------------------------------------
     1 RETURN                                                   
                                                  

     2 TBSCAN          MANSHANB             EMPLOYEE            
(Q1.SALARY = +0152750.00)                         

STATISTICS
---------------------------------
COMPILATION_TIME      =  4000
ISOLATION_LEVEL       =  CS
ROWS_READ             =  42
ROWS_RETURNED         =  1
ROWS_MODIFIED         =  0
TOTAL_SORTS           =  0
IN_MEMORY_SORTS       =  0
LOCK_WAITS            =  0
LOCK_ESCALS           =  0
LOCK_TIMEOUTS         =  0
POOL_READS            =  1
POOL_WRITES           =  0
QUERYOPT              =  5
ESTIMATED_COST        =  8
TOTAL_COST            =  7.6209
NETWORK_TRIPS         =  2
BYTES_SENT            =  462
BYTES_RECEIVED        =  2364

Tiện ích bộ đệm SQL

Công cụ trình soạn thảo có sẵn được CLPPlus hỗ trợ này có thể được sử dụng trong việc phát triển các khối SQL, PL/SQL lớn. Nó cung cấp các tiện ích bộ đệm khác nhau, có thể rất thuận tiện trong việc soạn thảo, ghi lưu và thực hiện các nội dung của tiện ích bộ đệm SQL một cách nhanh chóng và hiệu quả. Tiện ích bộ đệm SQL có thể hữu ích trong việc:

  • Sửa đổi các nội dung của tiện ích bộ đệm SQL bằng cách xóa, thêm hoặc thay thế một dòng trong bộ đệm
  • Nạp nội dung tập tin vào bộ đệm SQL
  • Soạn thảo nội dung bộ đệm bằng cách sử dụng trình biên tập bên ngoài
  • Thực thi các nội dung của bộ đệm
  • Ghi lưu nội dung của bộ đệm vào tệp tin

Bất kỳ lệnh SQL, PL/SQL đã thực hiện trước đây trong CLPPlus đều được lưu trữ trong tiện ích bộ đệm SQL. Có thể dùng lệnh LIST để liệt kê các nội dung bộ đệm SQL ra giao diện bàn điều khiển. Nếu người dùng muốn thấy chỉ một dòng cụ thể trong bộ đệm, thì dung lệnh LIST theo sau là số thứ tự của dòng sẽ hiển thị các nội dung dòng này trên giao diện bàn điều khiển như thể hiện trong ví dụ dưới đây. Chỉ cần nhập số dòng các nội dung của bộ đệm sẽ được liệt kê trên dòng đã cho.

Liệt kê 27. Lệnh LIST
SQL> select * from employee
  2  where firstnm='MICHAEL';
ERROR near line 1:
SQL0206N  "FIRSTNM" is not valid in the context where it is used.


SQL> list
 1  select * from employee
 2* where firstnm='MICHAEL'


SQL> list 2
 2* where firstnm='MICHAEL'

SQL> 1
 1* select * from employee

Một chuỗi cụ thể trong tiện ích bộ đệm SQL có thể được thay thế bằng cách sử dụng lệnh CHANGE. Chúng ta cũng có thể thay thế đoạn văn bản trong bộ đệm tại dòng ở số thứ tự đã cho hoặc loại bỏ lần xuất hiện đầu tiên của một chuỗi ký tự trong dòng hiện tại, bằng cách sử dụng tiện ích này.

Ví dụ dưới đây thay thế mọi chuỗi ký tự firstnm bằng chuỗi ký tự firstnme bằng cách sử dụng lệnh CHANGE.

Liệt kê 28. Lệnh CHANGE
SQL> list
 1  select * from employee
 2* where firstnm='MICHAEL'

SQL> change /firstnm/firstnme/
 2* where firstnme='MICHAEL'

Trong ví dụ dưới đây, văn bản tại dòng 2 được thay thế bằng dòng văn bản mới. Ở đây, 2 là số của dòng được thay thế trong bộ đệm, tiếp sau đó là văn bản để thay.

Liệt kê 29. Thay thế dòng bằng cách sử dụng số của dòng
SQL> 2 where salary>10000
 2* where salary>10000

SQL> list
 1  select * from employee
 2* where salary>10000

Chúng ta có thể nối thêm văn bản vào nội dung của tiện ích bộ đệm SQL hoặc thêm văn bản vào một dòng mới trong bộ đệm bằng cách sử dụng tương ứng các lệnh APPEND và INPUT. Tiện ích DEL có thể được sử dụng để xóa một dòng cụ thể trong bộ đệm. Ví dụ dưới đây trình diễn tiện ích này.

Liệt kê 30. Các lệnh INPUT, APPEND và DEL
SQL> input select * from employee
SQL> list
 1* select * from employee

SQL> append  where
SQL> list
 1* select * from employee where

SQL> input salary>10000
SQL> list
 1  select * from employee where
 2* salary>10000

SQL> del 2

SQL> list
 1* select * from employee where

SQL> input firstnme='MICHAEL'

SQL> list
 1  select * from employee where
 2* firstnme='MICHAEL'

CLPPlus hỗ trợ tải nội dung tập tin vào tiện ích bộ đệm SQL hoặc ghi lưu các nội dung của bộ đệm vào tệp tin, việc này là hữu ích khi phát triển các tập lệnh SQL qua nhiều phiên làm việc hoặc trên các máy chủ khác nhau. Tiện ích SAVE có thể được sử dụng trong việc ghi lưu các nội dung của bộ đệm vào tệp tin, và tiện ích GET có thể được sử dụng để tải nội dung tệp tin vào tiện ích bộ đệm SQL.

Liệt kê 31. Các tiện ích GET và SAVE
SQL> get c:\buffer.sql
 1* select * from employee

SQL> input where salary > 10000

SQL> list
 1  select * from employee
 2* where salary > 10000

SQL> save c:\buffer1.sql
DB250000I: The command completed successfully.

Lệnh dấu gạch xiên ngược (/) thực thi các nội dung có mặt trong tiện ích bộ đệm SQL. Và lệnh CLEAR xóa làm sạch các nội dung của tiện ích bộ đệm SQL.

Liệt kê 32. Tiện ích xóa bộ đệm
SQL> list
 1* select firstnme, salary from employee fetch first 2 rows only

SQL> /

FIRSTNME                         SALARY
--------------- -----------------------
MICHAEL                           15500
JOE                               11100

SQL> clear buffer
DB250000I: The command completed successfully.

SQL> list
DB250419W: The SQL buffer is empty.

Nội dung của tiện ích bộ đệm SQL cũng có thể được biên tập bằng cách sử dụng trình soạn thảo bên ngoài với sự giúp đỡ của lệnh EDIT. Lệnh EDIT gọi trình soạn thảo bên ngoài và nạp luôn nội dung của tiện ích bộ đệm SQL, người dùng có thể sửa đổi các nội dung này và ghi lưu trở lại vào bộ đệm. Người dùng có thể định cấu hình trình soạn thảo bên ngoài để sử dụng theo từng yêu cầu.


Lưu trữ vào vùng đệm

Các hoạt động xảy ra trong phiên CLPPlus có thể được ghi vào tệp tin bằng cách sử dụng tính năng lưu trữ vào vùng đệm. Tính năng này sẽ rất hữu ích trong việc phát triển các tập lệnh SQL lấy trong số các lệnh đã thực thi trong phiên CLPPlus. Kết quả là, tất cả các lệnh được thực thi và kết quả đầu ra được ghi vào tệp tin, tệp tin này có thể được xử lý để phát triển các tập lệnh.

Cần chỉ rõ một tệp tin khi cho phép lưu trữ vào vùng đệm, và đầu ra hiển thị được ghi vào trong tệp tin này. Thao tác lưu trữ vào vùng đệm cũng có thể được tắt đi tại bất kỳ điểm nào trong phiên làm việc, như cho thấy dưới đây.

Liệt kê 33. Lệnh spool
SQL> spool c:\spooler.sp

SQL> select firstnme, salary from employee fetch first 2 rows only;

FIRSTNME                         SALARY
--------------- -----------------------
MICHAEL                           15500
JOE                               11100

SQL> spool off

Kết luận

Bài viết này đã cung cấp các thông tin giá trị cho người dùng di trú từ Oracle đến DB2 bằng cách đưa ra một tổng quan về hỗ trợ khả năng tương thích với SQL được cung cấp trong CLPPlus. CLPPlus đóng một vai trò quan trọng trong việc cho phép di trú các tập lệnh của người sử dụng đến DB2, và do đó, bài viết này có thể là một tham chiếu tốt để có một bức tranh toàn cảnh về các tính năng tương thích SQL được hỗ trợ trong CLPPlus.

Bài viết này cũng rất hữu ích cho những người hiện đang sử dụng DB2 giúp họ trở nên quen thuộc với các phương tiện được CLPPlus cung cấp, các phương tiện này là mới cho các công cụ dòng lệnh của DB2 và có thể giúp họ thực hiện nhiệm vụ của mình một cách tốt hơn.

Để biết thêm về CLPPlus và các lệnh được hỗ trợ, hãy truy cập Trung tâm thông tin của DB2 cho Linux, UNIX và Windows V9.7.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

  • Tải về DB2 Express-C, bản miễn phí của cơ sở dữ liệu DB2 cho Linux, Windows, Solaris, và Mac, nó rất dễ sử dụng và cung cấp một cơ sở vững chắc để xây dựng và triển khai các ứng dụng.
  • Tải về bản đánh giá DB2 cho Linux, UNIX và Windows để dùng thử nó trong môi trường của riêng bạn
  • Xây dựng dự án phát triển tiếp theo của bạn với phần mềm dùng thử của IBM, có sẵn để tải về trực tiếp từ developerWorks.

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Information Management
ArticleID=844679
ArticleTitle=Tương thích của SQL trong CLPPlus
publish-date=11152012