Khi một mô-đun Python [. py] được chạy, các câu lệnh cấp cao nhất trong đó được thực thi theo thứ tự chúng xuất hiện, từ trên xuống dưới [từ đầu đến cuối]. Điều này có nghĩa là bạn không thể tham khảo một cái gì đó cho đến khi bạn đã xác định nó. Ví dụ: sau đây sẽ tạo ra lỗi hiển thị
c = a + b # -> NameError: name 'a' is not defined
a = 13
b = 17
Không giống như nhiều ngôn ngữ khác, các câu lệnh def
và class
có thể thực thi được trong Python—không chỉ là câu lệnh khai báo—vì vậy bạn không thể tham khảo cả a
hoặc b
cho đến khi điều đó xảy ra và chúng được xác định. Đây là lý do tại sao ví dụ đầu tiên của bạn gặp sự cố—bạn đang tham chiếu đến hàm Kerma[]
trước khi câu lệnh def
của nó được thực thi và phần thân đã được xử lý và đối tượng hàm kết quả được liên kết với tên của hàm, do đó, nó không được xác định tại thời điểm đó trong tập lệnh
Các chương trình trong các ngôn ngữ như C++ thường được xử lý trước khi chạy và trong giai đoạn biên dịch này, toàn bộ chương trình và bất kỳ tệp #include
nào mà nó đề cập đều được đọc và xử lý cùng một lúc. Không giống như Python, ngôn ngữ này có các câu lệnh khai báo cho phép khai báo tên và chuỗi lệnh gọi của các hàm [hoặc kiểu biến tĩnh] [nhưng không được xác định], trước khi sử dụng để khi trình biên dịch gặp tên của chúng, nó có đủ thông tin để kiểm tra chúng.
Hàm là một chương trình con có thể nhận tham số và trả về một giá trị. Một chức năng có hai phần. các đặc điểm kỹ thuật và cơ thể. Đặc tả [gọi tắt là spec] bắt đầu bằng từ khóa FUNCTION
và kết thúc bằng mệnh đề RETURN
, xác định kiểu dữ liệu của giá trị trả về. Khai báo tham số là tùy chọn. Các hàm không có tham số được viết mà không có dấu ngoặc đơn. Thân hàm bắt đầu bằng từ khóa IS
[hoặc AS
] và kết thúc bằng từ khóa END
theo sau là tên hàm tùy chọn
Thân hàm có ba phần. một phần khai báo tùy chọn, một phần thực thi và một phần xử lý ngoại lệ tùy chọn. Phần khai báo chứa các khai báo về kiểu, con trỏ, hằng, biến, ngoại lệ và chương trình con. Các mục này là cục bộ và không còn tồn tại khi bạn thoát khỏi chức năng. Phần thực thi chứa các câu lệnh gán giá trị, điều khiển thực thi và thao tác dữ liệu. Phần xử lý ngoại lệ chứa các trình xử lý xử lý các ngoại lệ phát sinh trong quá trình thực thi. Để biết thêm thông tin, xem. Để biết ví dụ về khai báo hàm, xem
Lưu ý rằng khai báo hàm trong khối hoặc gói PL/SQL không giống như tạo hàm trong SQL. Để biết thông tin về câu lệnh SQL CREATE
FUNCTION
, hãy xem
cú pháp
đặc tả chức năng. =
Mô tả chức năng minh họa_đặc điểm kỹ thuật. gif
khai báo hàm. =
Mô tả minh họa function_declaration. gif
cơ thể chức năng. =
Mô tả chức năng minh họa_body. gif
khai báo tham số. =
Mô tả minh họa function_parameter. gif
Mô tả từ khóa và tham số
loại dữ liệu
Một công cụ xác định loại. Đối với cú pháp của datatype
, xem
XÁC ĐỊNH
Một gợi ý giúp trình tối ưu hóa tránh các lệnh gọi hàm dư thừa. Nếu một hàm được lưu trữ đã được gọi trước đó với cùng các đối số, trình tối ưu hóa có thể chọn sử dụng kết quả trước đó. Kết quả hàm không được phụ thuộc vào trạng thái của biến phiên hoặc đối tượng lược đồ. Nếu không, kết quả có thể khác nhau giữa các cuộc gọi. Chỉ có thể gọi các hàm DETERMINISTIC
từ chỉ mục dựa trên hàm hoặc chế độ xem cụ thể hóa đã bật tính năng viết lại truy vấn. Để biết thêm thông tin và những hạn chế có thể có của tùy chọn DETERMINISTIC
, hãy xem tuyên bố CREATE
FUNCTION
trong. Xem thêm tuyên bố CREATE
RETURN
3 trong
Exception_handler
Liên kết một ngoại lệ với một chuỗi các câu lệnh, được thực thi khi ngoại lệ đó được đưa ra. Đối với cú pháp của RETURN
4, xem
sự diễn đạt
Một sự kết hợp phức tạp tùy ý của các biến, hằng, ký tự, toán tử và lệnh gọi hàm. Biểu thức đơn giản nhất bao gồm một biến duy nhất. Khi khai báo được xây dựng, giá trị của RETURN
5 được gán cho tham số. Giá trị và tham số phải có kiểu dữ liệu tương thích
Tên chức năng
Chỉ định tên bạn chọn cho chức năng
VÀO, RA, VÀO RA
Các chế độ tham số xác định hành vi của các tham số chính thức. Một tham số RETURN
6 truyền các giá trị cho chương trình con đang được gọi. Tham số RETURN
7 trả về giá trị cho người gọi chương trình con. Tham số RETURN
6 RETURN
7 chuyển các giá trị ban đầu cho chương trình con đang được gọi và trả về các giá trị cập nhật cho trình gọi
item_declaration
Khai báo một đối tượng chương trình. Đối với cú pháp của nó, xem
KHÔNG ĐƯỢC SAO CHÉP
Gợi ý trình biên dịch [không phải chỉ thị] cho phép trình biên dịch PL/SQL chuyển các tham số RETURN
7 và RETURN
6 RETURN
7 theo tham chiếu thay vì theo giá trị [mặc định]. Hàm có thể chạy nhanh hơn vì nó không phải tạo các bản sao tạm thời của các tham số này, nhưng kết quả có thể khác nếu hàm kết thúc với một ngoại lệ chưa được xử lý. Để biết thêm thông tin, xem
PARALLEL_ENABLE
Tuyên bố rằng một chức năng được lưu trữ có thể được sử dụng một cách an toàn trong các phiên nô lệ của các đánh giá DML song song. Trạng thái của phiên chính [đăng nhập] không bao giờ được chia sẻ với các phiên phụ. Mỗi phiên nô lệ có trạng thái riêng, được khởi tạo khi phiên bắt đầu. Kết quả chức năng không nên phụ thuộc vào trạng thái của phiên [IS
3] biến. Nếu không, kết quả có thể khác nhau giữa các phiên. Để biết thông tin về tùy chọn IS
4, hãy xem tuyên bố CREATE
FUNCTION
trong
tham số_name
Một tham số hình thức, một biến được khai báo trong thông số chức năng và được tham chiếu trong thân hàm
ĐƯỜNG ỐNG
IS
7 chỉ định trả về kết quả của hàm bảng lặp đi lặp lại. Hàm bảng trả về một loại tập hợp [bảng lồng nhau hoặc varray] với các phần tử là kiểu dữ liệu SQL. Bạn có thể truy vấn các hàm của bảng bằng cách sử dụng từ khóa IS
8 trước tên hàm trong mệnh đề IS
9 của truy vấn SQL. Để biết thêm thông tin, xem
PRAGMA AUTONOMOUS_TRANSACTION
Đánh dấu một chức năng là độc lập. Một giao dịch tự trị là một giao dịch độc lập được bắt đầu bởi giao dịch chính. Giao dịch tự trị cho phép bạn tạm dừng giao dịch chính, thực hiện các thao tác SQL, cam kết hoặc khôi phục các thao tác đó, sau đó tiếp tục giao dịch chính. Để biết thêm thông tin, xem
thủ tục_khai báo
Khai báo một thủ tục. Đối với cú pháp của AS
0, xem
TRỞ LẠI
Giới thiệu mệnh đề RETURN
, xác định kiểu dữ liệu của giá trị trả về
type_definition
Chỉ định kiểu dữ liệu do người dùng định nghĩa. Đối với AS
2, xem
=. VỠ NỢ
Khởi tạo tham số RETURN
6 thành giá trị mặc định
Ghi chú sử dụng
Một chức năng được gọi là một phần của một biểu thức
AS
4
Để có thể gọi được từ các câu lệnh SQL, một hàm được lưu trữ phải tuân theo các quy tắc nhất định kiểm soát các tác dụng phụ. Thấy
Trong một hàm, ít nhất một đường dẫn thực thi phải dẫn đến câu lệnh RETURN
. Nếu không, bạn sẽ gặp lỗi AS
6 trong thời gian chạy. Câu lệnh RETURN
phải chứa một biểu thức, được đánh giá khi câu lệnh RETURN
được thực thi. Giá trị kết quả được gán cho mã định danh hàm, hoạt động như một biến
Bạn có thể viết thông số chức năng và phần thân dưới dạng một đơn vị. Hoặc, bạn có thể tách thông số chức năng khỏi phần thân của nó. Bằng cách đó, bạn có thể ẩn các chi tiết triển khai bằng cách đặt hàm trong một gói. Bạn có thể định nghĩa các hàm trong thân gói mà không cần khai báo thông số kỹ thuật của chúng trong thông số gói. Tuy nhiên, các chức năng như vậy chỉ có thể được gọi từ bên trong gói
Bên trong một hàm, một tham số RETURN
6 hoạt động như một hằng số; . Tham số RETURN
7 hoạt động như một biến cục bộ; . Tham số RETURN
6 RETURN
7 hoạt động như một biến được khởi tạo; . Để biết thông tin về các chế độ tham số, xem
Tránh sử dụng các chế độ RETURN
7 và RETURN
6 RETURN
7 với các chức năng. Mục đích của hàm là lấy 0 hoặc nhiều tham số và trả về một giá trị. Các chức năng không được có tác dụng phụ làm thay đổi giá trị của các biến không cục bộ đối với chương trình con