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.
22 trang |
Chia sẻ: lylyngoc | Lượt xem: 1550 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Tương thích của SQL trong CLPPlus, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Tương thích của SQL trong CLPPlus
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ụ.
Về đầu trang
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.
Về đầu trang
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.
Về đầu trang
Đị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."
Về đầu trang
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> sele