DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
67DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
68DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
69DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
70DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
71DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
72DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
73DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
74DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
75DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
70DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
71DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
72DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
682DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
683DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
684DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
685DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
686 Create a function
Trong MySQL, Hàm cũng có thể được tạo. Một hàm luôn trả về một giá trị bằng cách sử dụng câu lệnh return. Hàm này có thể được sử dụng trong truy vấn SQL
Nội dung chính Hiển thị
- Create a function
- Ví dụ 1
- Clear hàm
- Ví dụ 1
- 13. 1. 17 TẠO THỦ TỤC và TẠO CHỨC NĂNG Câu lệnh
cú pháp
CREATE FUNCTION function_name [ [parameter datatype [, parameter datatype]] ]
RETURNS return_datatype
BEGIN
Declaration_section
Executable_section
END;
Tham số
Tên chức năng. tên chức năng
Tham số. tham số number. Có thể là một tham số hoặc nhiều hơn
return_datatype. Kiểu dữ liệu giá trị được trả về,
phần khai báo. Các biến được khai báo
phần thực thi. Mã hàm được viết tại đây
Ví dụ 1
Bước 1. Create CSDL and bảng
CSDL. Nhân viên
Bảng 1. chỉ định
Bảng 2. Nhân Viên
Bước 2. Create a function
Câu truy vấn trong hàm
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
Bước 3. Thi hàm
Câu hỏi
SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
Clear hàm
In MySQL function can also be delete, Hàm can could be delete from from
cú pháp
Drop function [ IF EXISTS ] function_name;
Tham số
Tên chức năng. Tên hàm sẽ bị xóa
Ví dụ 1
Xóa hàm tên là get_designation_name;
13. 1. 17 TẠO THỦ TỤC và TẠO CHỨC NĂNG Câu lệnh
CREATE
[DEFINER = user]
PROCEDURE [IF NOT EXISTS] sp_name [[proc_parameter[,...]]]
[characteristic ...] routine_body
CREATE
[DEFINER = user]
FUNCTION [IF NOT EXISTS] sp_name [[func_parameter[,...]]]
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
routine_body:
Valid SQL routine statement
Các câu lệnh này được sử dụng để tạo một thói quen được lưu trữ [một thủ tục hoặc chức năng được lưu trữ]. Nghĩa là, quy trình được chỉ định sẽ được máy chủ biết đến. Theo mặc định, một thói quen được lưu trữ được liên kết với cơ sở dữ liệu mặc định. Để liên kết quy trình một cách rõ ràng với một cơ sở dữ liệu nhất định, hãy chỉ định tên là
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
84 khi bạn tạo nóCâu lệnh
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
0 cũng được sử dụng trong MySQL để hỗ trợ các chức năng có thể tải. Xem Phần 13. 7. 4. 1, “CREATE FUNCTION Statement for Loadable Functions”. Một chức năng có thể tải có thể được coi là một chức năng được lưu trữ bên ngoài. Các chức năng được lưu trữ chia sẻ không gian tên của chúng với các chức năng có thể tải. Xem Phần 9. 2. 5, “Phân tích và phân giải tên hàm”, dành cho các quy tắc mô tả cách máy chủ diễn giải các tham chiếu đến các loại hàm khác nhauĐể gọi một thủ tục được lưu trữ, hãy sử dụng câu lệnh
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
1 [xem Phần 13. 2. 1, “Tuyên bố GỌI”]. Để gọi một chức năng được lưu trữ, hãy tham khảo nó trong một biểu thức. Hàm trả về một giá trị trong quá trình đánh giá biểu thứcDELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
2 và DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
0 yêu cầu đặc quyền DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
4. Nếu có mệnh đề DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5, thì các đặc quyền cần có sẽ phụ thuộc vào giá trị DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
6, như đã thảo luận trong Phần 25. 6, “Kiểm soát truy cập đối tượng được lưu trữ”. Nếu tính năng ghi nhật ký nhị phân được bật, thì DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
0 có thể yêu cầu đặc quyền của DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
8, như đã thảo luận trong Phần 25. 7, “Ghi nhật ký nhị phân chương trình được lưu trữ”Theo mặc định, MySQL tự động cấp các đặc quyền
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
9 và SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
0 cho trình tạo thường trình. Hành vi này có thể được thay đổi bằng cách vô hiệu hóa biến hệ thống SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
1. Xem Phần 25. 2. 2, “Các quy trình được lưu trữ và các đặc quyền của MySQL”Các mệnh đề
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5 và SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
3 chỉ định ngữ cảnh bảo mật sẽ được sử dụng khi kiểm tra các đặc quyền truy cập tại thời điểm thực hiện thông thường, như được mô tả sau trong phần nàyNếu tên thường trình giống với tên của một hàm SQL tích hợp, lỗi cú pháp sẽ xảy ra trừ khi bạn sử dụng khoảng trắng giữa tên và dấu ngoặc đơn sau khi xác định thường trình hoặc gọi nó sau này. Vì lý do này, tránh sử dụng tên của các hàm SQL hiện có cho các thường trình được lưu trữ của riêng bạn
Chế độ SQL
SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
4 áp dụng cho các chức năng tích hợp sẵn, không áp dụng cho các quy trình được lưu trữ. Luôn cho phép có khoảng trắng sau tên quy trình được lưu trữ, bất kể có bật SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
4 hay khôngSELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
6 ngăn lỗi xảy ra nếu đã tồn tại một quy trình có cùng tên. Tùy chọn này được hỗ trợ với cả DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
0 và DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
2 bắt đầu với MySQL 8. 0. 29Nếu một hàm tích hợp có cùng tên đã tồn tại, việc cố gắng tạo một hàm được lưu trữ với
SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
9 sẽ thành công với một cảnh báo cho biết rằng nó có cùng tên với một hàm gốc; Nếu một chức năng có thể tải được có cùng tên đã tồn tại, việc cố gắng tạo một chức năng được lưu trữ bằng cách sử dụng
SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
6 sẽ thành công với một cảnh báo. Điều này giống như không chỉ định SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
6Xem Độ phân giải tên chức năng, để biết thêm thông tin
Danh sách tham số được đặt trong ngoặc đơn phải luôn có mặt. Nếu không có tham số, nên sử dụng danh sách tham số trống của
Drop function [ IF EXISTS ] function_name;
4. Tên tham số không phân biệt chữ hoa chữ thườngMỗi tham số là một tham số
Drop function [ IF EXISTS ] function_name;
5 theo mặc định. Để chỉ định khác cho một tham số, hãy sử dụng từ khóa Drop function [ IF EXISTS ] function_name;
6 hoặc Drop function [ IF EXISTS ] function_name;
7 trước tên tham sốGhi chú
Việc chỉ định một tham số là
Drop function [ IF EXISTS ] function_name;
5, Drop function [ IF EXISTS ] function_name;
6 hoặc Drop function [ IF EXISTS ] function_name;
7 chỉ có hiệu lực đối với một CREATE
[DEFINER = user]
PROCEDURE [IF NOT EXISTS] sp_name [[proc_parameter[,...]]]
[characteristic ...] routine_body
CREATE
[DEFINER = user]
FUNCTION [IF NOT EXISTS] sp_name [[func_parameter[,...]]]
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
routine_body:
Valid SQL routine statement
1. Đối với CREATE
[DEFINER = user]
PROCEDURE [IF NOT EXISTS] sp_name [[proc_parameter[,...]]]
[characteristic ...] routine_body
CREATE
[DEFINER = user]
FUNCTION [IF NOT EXISTS] sp_name [[func_parameter[,...]]]
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
routine_body:
Valid SQL routine statement
2, tham số luôn được coi là tham số Drop function [ IF EXISTS ] function_name;
5Một tham số
Drop function [ IF EXISTS ] function_name;
5 chuyển một giá trị vào một thủ tục. Thủ tục có thể sửa đổi giá trị, nhưng sửa đổi không hiển thị cho người gọi khi thủ tục trả về. Tham số Drop function [ IF EXISTS ] function_name;
6 chuyển một giá trị từ thủ tục trở lại trình gọi. Giá trị ban đầu của nó là CREATE
[DEFINER = user]
PROCEDURE [IF NOT EXISTS] sp_name [[proc_parameter[,...]]]
[characteristic ...] routine_body
CREATE
[DEFINER = user]
FUNCTION [IF NOT EXISTS] sp_name [[func_parameter[,...]]]
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
routine_body:
Valid SQL routine statement
6 trong thủ tục và giá trị của nó hiển thị cho người gọi khi thủ tục trả về. Tham số Drop function [ IF EXISTS ] function_name;
7 được khởi tạo bởi người gọi, có thể được sửa đổi bởi thủ tục và bất kỳ thay đổi nào được thực hiện bởi thủ tục đều hiển thị cho người gọi khi thủ tục trả vềĐối với mỗi tham số
Drop function [ IF EXISTS ] function_name;
6 hoặc Drop function [ IF EXISTS ] function_name;
7, hãy chuyển một biến do người dùng xác định trong câu lệnh DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
1 để gọi thủ tục để bạn có thể lấy giá trị của nó khi thủ tục trả về. Nếu bạn đang gọi thủ tục từ bên trong một thủ tục hoặc hàm được lưu trữ khác, bạn cũng có thể truyền tham số thường trình hoặc biến thường trình cục bộ dưới dạng tham số Drop function [ IF EXISTS ] function_name;
6 hoặc Drop function [ IF EXISTS ] function_name;
7. Nếu bạn đang gọi thủ tục từ bên trong trình kích hoạt, bạn cũng có thể chuyển CREATE
[DEFINER = user]
PROCEDURE [IF NOT EXISTS] sp_name [[proc_parameter[,...]]]
[characteristic ...] routine_body
CREATE
[DEFINER = user]
FUNCTION [IF NOT EXISTS] sp_name [[func_parameter[,...]]]
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
routine_body:
Valid SQL routine statement
83 dưới dạng tham số Drop function [ IF EXISTS ] function_name;
6 hoặc Drop function [ IF EXISTS ] function_name;
7Để biết thông tin về ảnh hưởng của các điều kiện chưa được xử lý đối với các tham số quy trình, hãy xem Phần 13. 6. 7. 8, “Xử lý điều kiện và Thông số OUT hoặc INOUT”
Các tham số thường trình không thể được tham chiếu trong các câu lệnh được chuẩn bị trong thường trình; . 8, “Hạn chế đối với các chương trình được lưu trữ”
Ví dụ sau đây cho thấy một thủ tục được lưu trữ đơn giản, được cung cấp mã quốc gia, đếm số lượng thành phố của quốc gia đó xuất hiện trong bảng
CREATE
[DEFINER = user]
PROCEDURE [IF NOT EXISTS] sp_name [[proc_parameter[,...]]]
[characteristic ...] routine_body
CREATE
[DEFINER = user]
FUNCTION [IF NOT EXISTS] sp_name [[func_parameter[,...]]]
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
routine_body:
Valid SQL routine statement
86 của cơ sở dữ liệu CREATE
[DEFINER = user]
PROCEDURE [IF NOT EXISTS] sp_name [[proc_parameter[,...]]]
[characteristic ...] routine_body
CREATE
[DEFINER = user]
FUNCTION [IF NOT EXISTS] sp_name [[func_parameter[,...]]]
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
routine_body:
Valid SQL routine statement
87. Mã quốc gia được chuyển bằng tham số Drop function [ IF EXISTS ] function_name;
5 và số lượng thành phố được trả về bằng tham số Drop function [ IF EXISTS ] function_name;
6CREATE
[DEFINER = user]
PROCEDURE [IF NOT EXISTS] sp_name [[proc_parameter[,...]]]
[characteristic ...] routine_body
CREATE
[DEFINER = user]
FUNCTION [IF NOT EXISTS] sp_name [[func_parameter[,...]]]
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
routine_body:
Valid SQL routine statement
8Ví dụ sử dụng lệnh mysql client
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
60 để thay đổi dấu phân cách câu lệnh từ DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
61 thành DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
62 trong khi quy trình đang được xác định. Điều này cho phép dấu phân cách DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
61 được sử dụng trong phần thân thủ tục được chuyển qua máy chủ thay vì được giải thích bởi chính mysql . Xem Phần 25. 1, “Định nghĩa các chương trình được lưu trữ”. Điều khoản
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
64 chỉ có thể được chỉ định cho một CREATE
[DEFINER = user]
PROCEDURE [IF NOT EXISTS] sp_name [[proc_parameter[,...]]]
[characteristic ...] routine_body
CREATE
[DEFINER = user]
FUNCTION [IF NOT EXISTS] sp_name [[func_parameter[,...]]]
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic: {
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
}
routine_body:
Valid SQL routine statement
2, điều này là bắt buộc. Nó cho biết kiểu trả về của hàm và thân hàm phải chứa câu lệnh DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
66. Nếu câu lệnh DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
67 trả về một giá trị thuộc loại khác, thì giá trị đó sẽ được chuyển sang loại phù hợp. Ví dụ: nếu một hàm chỉ định giá trị DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
68 hoặc DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
69 trong mệnh đề DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
64, nhưng câu lệnh DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
67 trả về một số nguyên, thì giá trị được trả về từ hàm là chuỗi cho phần tử DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
68 tương ứng của tập hợp gồm các phần tử DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
69Hàm ví dụ sau nhận một tham số, thực hiện một thao tác bằng hàm SQL và trả về kết quả. Trong trường hợp này, không cần thiết phải sử dụng
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
60 vì định nghĩa hàm không chứa dấu phân cách câu lệnh DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
61 bên trongDELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
6Các kiểu tham số và kiểu trả về của hàm có thể được khai báo để sử dụng bất kỳ kiểu dữ liệu hợp lệ nào. Thuộc tính
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
36 có thể được sử dụng nếu trước thông số kỹ thuật của DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
37DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
38 bao gồm một câu lệnh SQL hợp lệ. Đây có thể là một câu lệnh đơn giản như DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
39 hoặc DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
70 hoặc một câu lệnh ghép được viết bằng cách sử dụng DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
71 và DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
72. Các câu lệnh ghép có thể chứa các khai báo, vòng lặp và các câu lệnh cấu trúc điều khiển khác. Cú pháp của những câu lệnh này được mô tả trong Phần 13. 6, “Cú pháp câu lệnh ghép”. Trong thực tế, các hàm được lưu trữ có xu hướng sử dụng các câu lệnh ghép, trừ khi phần thân bao gồm một câu lệnh DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
67MySQL cho phép các thói quen chứa các câu lệnh DDL, chẳng hạn như
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
74 và DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
75. MySQL cũng cho phép các thủ tục được lưu trữ [nhưng không phải các chức năng được lưu trữ] chứa các câu lệnh giao dịch SQL, chẳng hạn như DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
76. Các chức năng được lưu trữ có thể không chứa các câu lệnh thực hiện cam kết hoặc khôi phục rõ ràng hoặc ẩn. Tiêu chuẩn SQL không yêu cầu hỗ trợ cho các câu lệnh này, trong đó nêu rõ rằng mỗi nhà cung cấp DBMS có thể quyết định có cho phép chúng hay không.Các câu lệnh trả về một tập kết quả có thể được sử dụng trong một thủ tục được lưu trữ chứ không phải trong một hàm được lưu trữ. Lệnh cấm này bao gồm các câu lệnh
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
39 không có mệnh đề DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
78 và các câu lệnh khác như DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
79, DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
840 và DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
841. Đối với các câu lệnh có thể được xác định tại thời điểm định nghĩa hàm để trả về một tập kết quả, sẽ xảy ra lỗi DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
842 [DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
843]. Đối với các câu lệnh chỉ có thể được xác định trong thời gian chạy để trả về một tập kết quả, sẽ xảy ra lỗi DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
844 [DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
845]Các câu lệnh
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
846 trong các thói quen được lưu trữ không được phép. Khi một thói quen được gọi, một DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
847 ngầm được thực hiện [và hoàn tác khi thói quen kết thúc]. Nguyên nhân khiến thủ tục có cơ sở dữ liệu mặc định nhất định trong khi nó thực thi. Tham chiếu đến các đối tượng trong cơ sở dữ liệu khác với cơ sở dữ liệu mặc định thông thường phải đủ điều kiện với tên cơ sở dữ liệu thích hợpĐể biết thêm thông tin về các câu lệnh không được phép trong các quy trình được lưu trữ, hãy xem Phần 25. 8, “Hạn chế đối với các chương trình được lưu trữ”
Để biết thông tin về cách gọi các thủ tục được lưu trữ từ bên trong các chương trình được viết bằng ngôn ngữ có giao diện MySQL, hãy xem Phần 13. 2. 1, “Tuyên bố GỌI”
MySQL lưu cài đặt biến hệ thống
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
848 có hiệu lực khi một quy trình được tạo hoặc thay đổi và luôn thực thi quy trình với cài đặt này có hiệu lực, bất kể chế độ SQL của máy chủ hiện tại khi . .Việc chuyển từ chế độ SQL của trình gọi sang chế độ của thủ tục xảy ra sau khi đánh giá các đối số và gán các giá trị kết quả cho các tham số thủ tục. Nếu bạn xác định một thủ tục trong chế độ nghiêm ngặt SQL nhưng gọi nó trong chế độ không nghiêm ngặt, việc gán đối số cho các tham số thường trình không diễn ra trong chế độ nghiêm ngặt. Nếu bạn yêu cầu các biểu thức được chuyển đến một quy trình được chỉ định ở chế độ SQL nghiêm ngặt, thì bạn nên gọi quy trình có chế độ nghiêm ngặt đang có hiệu lực
Đặc tính
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
849 là một phần mở rộng của MySQL và có thể được sử dụng để mô tả quy trình được lưu trữ. Thông tin này được hiển thị bởi các câu lệnh DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
00 và DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
01Đặc tính
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
02 cho biết ngôn ngữ mà quy trình được viết. Máy chủ bỏ qua đặc điểm này; Một quy trình được coi là “ có tính quyết định ” nếu nó . Nếu cả
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
03 và DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
04 đều không được đưa ra trong định nghĩa thông thường, giá trị mặc định là DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
04. Để tuyên bố rằng một chức năng là xác định, bạn phải chỉ định rõ ràng DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
03. “not deterministic” otherwise. If neither DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
03 nor DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
04 is given in the routine definition, the default is DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
04. To declare that a function is deterministic, you must specify DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
03 explicitly.Việc đánh giá bản chất của một thói quen dựa trên “ sự trung thực ” of the creator: MySQL does not check that a routine declared
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
03 is free of statements that produce nondeterministic results. However, misdeclaring a routine might affect results or affect performance. Declaring a nondeterministic routine as DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
03 might lead to unexpected results by causing the optimizer to make incorrect execution plan choices. Declaring a deterministic routine as DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
09 might diminish performance by causing available optimizations not to be used.Nếu tính năng ghi nhật ký nhị phân được bật, đặc tính
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
03 sẽ ảnh hưởng đến các định nghĩa thường trình mà MySQL chấp nhận. Xem Phần 25. 7, “Ghi nhật ký nhị phân chương trình được lưu trữ”Một thói quen chứa hàm
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
11 [hoặc các từ đồng nghĩa của nó] hoặc DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
12 là không xác định, nhưng nó vẫn có thể sao chép an toàn. Đối với DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
11, nhật ký nhị phân bao gồm dấu thời gian và sao chép chính xác. DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
12 cũng sao chép chính xác miễn là nó chỉ được gọi một lần duy nhất trong quá trình thực hiện quy trình. [Bạn có thể coi dấu thời gian thực hiện quy trình và hạt giống số ngẫu nhiên là các đầu vào ẩn giống hệt nhau trên nguồn và bản sao. ]Một số đặc điểm cung cấp thông tin về bản chất của việc sử dụng dữ liệu theo quy trình. Trong MySQL, những đặc điểm này chỉ mang tính chất tư vấn. Máy chủ không sử dụng chúng để hạn chế loại câu lệnh nào mà một thường trình được phép thực thi
15 chỉ ra rằng thủ tục không chứa các câu lệnh đọc hoặc ghi dữ liệu. Đây là mặc định nếu không có đặc điểm nào trong số này được đưa ra một cách rõ ràng. Ví dụ về các câu lệnh như vậy làDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
16 hoặcDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
17, thực thi nhưng không đọc hoặc ghi dữ liệuDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
18 chỉ ra rằng thủ tục không chứa câu lệnh SQL nàoDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
19 chỉ ra rằng thủ tục chứa các câu lệnh đọc dữ liệu [ví dụ:DELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
39], nhưng không chứa các câu lệnh ghi dữ liệuDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
21 chỉ ra rằng thủ tục chứa các câu lệnh có thể ghi dữ liệu [ví dụ:DELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
70 hoặcDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
23]DELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
Đặc tính
SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
3 có thể là DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5 hoặc DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
26 để chỉ định bối cảnh bảo mật; . Tài khoản này phải có quyền truy cập cơ sở dữ liệu có liên quan đến quy trình. Giá trị mặc định là DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5. Người dùng gọi thủ tục phải có đặc quyền SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
0 cho nó, cũng như tài khoản DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5 nếu thủ tục thực thi trong ngữ cảnh bảo mật của bộ định nghĩaMệnh đề
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5 chỉ định tài khoản MySQL sẽ được sử dụng khi kiểm tra các đặc quyền truy cập tại thời điểm thực hiện thường trình cho các thường trình có đặc tính DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
32Nếu có mệnh đề
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5, thì giá trị DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
6 phải là tài khoản MySQL được chỉ định là DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
35'@'DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
36', DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
37 hoặc DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
38. Các giá trị DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
6 được phép tùy thuộc vào các đặc quyền mà bạn nắm giữ, như đã thảo luận trong Phần 25. 6, “Kiểm soát truy cập đối tượng được lưu trữ”. Đồng thời xem phần đó để biết thêm thông tin về bảo mật thường trình được lưu trữNếu mệnh đề
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5 bị bỏ qua, định nghĩa mặc định là người dùng thực thi câu lệnh DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
2 hoặc DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
0. Điều này giống như chỉ định rõ ràng DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
43Trong phần thân của quy trình được lưu trữ được xác định bằng đặc tính
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
32, hàm DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
37 trả về giá trị DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5 của quy trình. Để biết thông tin về kiểm tra người dùng trong các quy trình được lưu trữ, hãy xem Phần 6. 2. 23, “Kiểm tra hoạt động tài khoản dựa trên SQL”Xem xét quy trình sau đây, quy trình này hiển thị số lượng tài khoản MySQL được liệt kê trong bảng hệ thống
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
47DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
3Quy trình được chỉ định một tài khoản
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5 của DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
49 bất kể người dùng nào xác định nó. Nó thực thi với các đặc quyền của tài khoản đó bất kể người dùng nào gọi nó [vì đặc điểm bảo mật mặc định là DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5]. Thủ tục thành công hay thất bại tùy thuộc vào việc người gọi có đặc quyền SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
0 cho nó và DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
49 có đặc quyền DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
39 cho bảng DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
47Bây giờ, giả sử rằng thủ tục được xác định với đặc tính
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
55DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
7Thủ tục vẫn có một
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5 của DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
49, nhưng trong trường hợp này, nó thực thi với các đặc quyền của người dùng đang gọi. Do đó, thủ tục thành công hay thất bại tùy thuộc vào việc người gọi có đặc quyền SELECT id, get_designation1[`d_id`] as DESIGNATION, name FROM 'staff'
0 cho nó và đặc quyền DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
39 cho bảng DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
47 hay khôngTheo mặc định, khi một quy trình có đặc tính
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
32 được thực thi, Máy chủ MySQL không đặt bất kỳ vai trò tích cực nào cho tài khoản MySQL có tên trong mệnh đề DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5, chỉ đặt các vai trò mặc định. Ngoại lệ là nếu biến hệ thống DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
63 được bật, trong trường hợp đó, Máy chủ MySQL đặt tất cả các vai trò được cấp cho người dùng DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
5, bao gồm các vai trò bắt buộc. Do đó, bất kỳ đặc quyền nào được cấp thông qua các vai trò đều không được kiểm tra theo mặc định khi phát hành câu lệnh DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
2 hoặc DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
0. Đối với các chương trình được lưu trữ, nếu việc thực thi xảy ra với các vai trò khác với vai trò mặc định, phần thân chương trình có thể thực thi DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
67 để kích hoạt các vai trò được yêu cầu. Điều này phải được thực hiện một cách thận trọng vì các đặc quyền được gán cho các vai trò có thể bị thay đổiMáy chủ xử lý kiểu dữ liệu của tham số thường trình, biến thường trình cục bộ được tạo bằng
DELIMITER $$
CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ]
BEGIN
DECLARE de_name VARCHAR[ 20 ] DEFAULT "";
SELECT name INTO de_name FROM designation WHERE id = d_id;
RETURN de_name;
END $$
68 hoặc giá trị trả về của hàm như sauCác bài tập được kiểm tra để loại dữ liệu không khớp và tràn. Sự cố chuyển đổi và tràn dẫn đến cảnh báo hoặc lỗi trong chế độ SQL nghiêm ngặt
Chỉ có thể gán giá trị vô hướng. Ví dụ: một câu lệnh chẳng hạn như
69 không hợp lệDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
Đối với các kiểu dữ liệu ký tự, nếu khai báo có chứa
37 thì bộ ký tự đã chỉ định và đối chiếu mặc định của nó sẽ được sử dụng. Nếu thuộc tínhDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
36 cũng có mặt, thì đối chiếu đó được sử dụng thay vì đối chiếu mặc địnhDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
Nếu không có
37 vàDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
36, bộ ký tự và đối chiếu cơ sở dữ liệu có hiệu lực tại thời điểm tạo quy trình sẽ được sử dụng. Để tránh việc máy chủ sử dụng bộ ký tự và đối chiếu cơ sở dữ liệu, hãy cung cấp thuộc tínhDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
37 vàDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
36 rõ ràng cho các tham số dữ liệu ký tựDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
Nếu bạn thay đổi bộ ký tự hoặc đối chiếu mặc định của cơ sở dữ liệu, thì các quy trình được lưu trữ để sử dụng các giá trị mặc định của cơ sở dữ liệu mới phải được loại bỏ và tạo lại
Bộ ký tự cơ sở dữ liệu và đối chiếu được đưa ra bởi giá trị của các biến hệ thống
76 vàDELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$
77. Để biết thêm thông tin, hãy xem Phần 10. 3. 3, “Bộ ký tự cơ sở dữ liệu và đối chiếu”DELIMITER $$ CREATE FUNCTION get_designation_name[d_id INT] RETURNS VARCHAR[ 20 ] BEGIN DECLARE de_name VARCHAR[ 20 ] DEFAULT ""; SELECT name INTO de_name FROM designation WHERE id = d_id; RETURN de_name; END $$