Tôi có một quy trình lưu trữ MySQL trong đó tôi tìm thấy giá trị tối đa từ bảng.
Nếu không có giá trị, tôi muốn đặt biến cho ngày hôm qua.
DECLARE current_procedure_name CHAR[60] DEFAULT 'accounts_general';
DECLARE last_run_time datetime DEFAULT NULL;
DECLARE current_run_time datetime DEFAULT NOW[];
-- Define the last run time
SET last_run_time := [SELECT MAX[runtime]
FROM dynamo.runtimes WHERE procedure_name = @current_procedure_name];
-- if there is no last run time found then use yesterday as starting point
IF[@last_run_time IS NULL] THEN
SET last_run_time := DATE_SUB[ NOW[], INTERVAL 1 DAY];
END IF;
SELECT @last_run_time;
Vấn đề là @last_run_time
luôn vô hiệu.
Mã sau không được thực thi vì một số lý do
IF[last_run_time IS NULL] THEN
SET last_run_time := DATE_SUB[ NOW[], INTERVAL 1 DAY];
END IF;
Làm thế nào tôi có thể đặt biến @last_run_time
một cách chính xác?
Hỏi ngày 28 tháng 8 năm 2013 lúc 23:06Aug 28, 2013 at 23:06
2
@last_run_time
là 9,4. Các biến do người dùng xác định và
IF[last_run_time IS NULL] THEN
SET last_run_time := DATE_SUB[ NOW[], INTERVAL 1 DAY];
END IF;
1 một 13.6.4.1. Biến cục bộ Tuyên bố Syntax, là các biến khác nhau.Hãy thử:
IF[last_run_time IS NULL] THEN
SET last_run_time := DATE_SUB[ NOW[], INTERVAL 1 DAY];
END IF;
2CẬP NHẬT
Example:
/* CODE FOR DEMONSTRATION PURPOSES */
DELIMITER $$
CREATE PROCEDURE `sp_test`[]
BEGIN
DECLARE current_procedure_name CHAR[60] DEFAULT 'accounts_general';
DECLARE last_run_time DATETIME DEFAULT NULL;
DECLARE current_run_time DATETIME DEFAULT NOW[];
-- Define the last run time
SET last_run_time := [SELECT MAX[runtime] FROM dynamo.runtimes WHERE procedure_name = current_procedure_name];
-- if there is no last run time found then use yesterday as starting point
IF[last_run_time IS NULL] THEN
SET last_run_time := DATE_SUB[NOW[], INTERVAL 1 DAY];
END IF;
SELECT last_run_time;
-- Insert variables in table2
INSERT INTO table2 [col0, col1, col2] VALUES [current_procedure_name, last_run_time, current_run_time];
END$$
DELIMITER ;
Đã trả lời ngày 28 tháng 8 năm 2013 lúc 23:16Aug 28, 2013 at 23:16
wchiquitowchiquitowchiquito
15.9k2 Huy hiệu vàng33 Huy hiệu bạc45 Huy hiệu Đồng2 gold badges33 silver badges45 bronze badges
10
Để kiểm tra NULL hoặc biến trống, hãy sử dụng điều kiện IF. Hãy để chúng tôi tạo một thủ tục được lưu trữ -
mysql> delimiter // mysql> create procedure checkingForNullDemo[Name varchar[20]] begin if Name is NULL OR Name='' then select 'Adam Smith'; else select Name; end if ; end // Query OK, 0 rows affected [0.00 sec] mysql> delimiter ;
Trường hợp 1
Khi NULL được thông qua. Gọi thủ tục được lưu trữ bằng lệnh gọi
mysql> call checkingForNullDemo[NULL];
Điều này sẽ tạo ra đầu ra sau -
+------------+ | Adam Smith | +------------+ | Adam Smith | +------------+ 1 row in set [0.00 sec] Query OK, 0 rows affected, 1 warning [0.00 sec]
Trường hợp 2
Khi một giá trị được thông qua. Gọi quy trình được lưu trữ bằng lệnh gọi
mysql> call checkingForNullDemo['John Doe'];
Điều này sẽ tạo ra đầu ra sau -
+----------+ | Name | +----------+ | John Doe | +----------+ 1 row in set [0.00 sec] Query OK, 0 rows affected [0.00 sec]
Trường hợp 2
- Khi một giá trị được thông qua. Gọi quy trình được lưu trữ bằng lệnh gọi
- Cập nhật vào ngày 25 tháng 2 năm 2020 13:02:51
- Câu hỏi và câu trả lời liên quan
- Kiểm tra xem một trường trống hay null trong mysql?
- Trong các quy trình lưu trữ MySQL, làm thế nào để kiểm tra xem một biến cục bộ có phải là null không?
- Đặt giá trị tùy chỉnh cho các giá trị null hoặc trống trong mysql
- Kiểm tra các giá trị null hay không null trong một cột trong mysql
- Kiểm tra null hoặc trống trong java.
- Làm thế nào để kiểm tra xem trường là null hoặc trống trong mysql?
- Điều kiện ở đâu mệnh đề trong quy trình lưu trữ MySQL để đặt giá trị tùy chỉnh cho các giá trị null
- Làm cách nào để kiểm tra xem một cột có trống hoặc null trong mysql không?
- MySQL không phải là một thông điệp biến đổi hoặc giả mới. Lỗi này trong thủ tục lưu trữ của tôi là gì?
- Làm thế nào để kiểm tra xem một thủ tục được lưu trữ có tồn tại trong MySQL không?
- Quy trình được lưu trữ bằng cách sử dụng biến trong biểu thức giới hạn?
- Làm thế nào một thủ tục lưu trữ MySQL có thể gọi một thủ tục lưu trữ MySQL khác bên trong nó?
- Chương trình Java để kiểm tra xem một chuỗi có trống hay không