Hướng dẫn mysql stored procedure check if parameter null - thủ tục lưu trữ mysql kiểm tra nếu tham số null

Tôi không chắc tôi hiểu những gì bạn đang cố gắng làm.

Nếu bạn muốn sử dụng giá trị

   SET ls_engineer = IFNULL[engineer,'JM'];
0 thay vì
   SET ls_engineer = IFNULL[engineer,'JM'];
1 khi đối số đầu vào có giá trị
   SET ls_engineer = IFNULL[engineer,'JM'];
1, một cách để có được loại hành vi đó là khai báo một biến cục bộ trong quy trình.

Kiểm tra giá trị của tham số và đặt giá trị của biến cục bộ phù hợp; Đặt biến cục bộ thành giá trị theo nghĩa đen

   SET ls_engineer = IFNULL[engineer,'JM'];
0 khi đối số đầu vào là null hoặc với giá trị của đối số đầu vào khi nó không phải là null. Sau đó tham chiếu biến cục bộ trong câu lệnh SQL.

Một cái gì đó như thế này:

DELIMITER $$

CREATE DEFINER=`james`@`%` PROCEDURE `Project_Status`[IN engineer VARCHAR[5]]
BEGIN

   DECLARE ls_engineer VARCHAR[5];
   SET ls_engineer = IFNULL[engineer,'JM'];

   SELECT pp.pid_full
        , pp.description_small
        , pp.project_status
        , pp.est_comp_date as 'Est Comp Date'
        , ep.engineer
     FROM project_pid pp
     JOIN eng_project_hours ep
        ON pp.pid_full = ep.pid_full
     WHERE ep.engineer = ls_engineer ;
END$$

Lưu ý rằng điều này:

   SET ls_engineer = IFNULL[engineer,'JM'];

Nhập tốc dễ đọc hơn tương đương với điều này:

   IF [ engineer IS NULL ] THEN
      SET ls_engineer = 'JM';
   ELSE
      SET ls_engineer = engineer;
   END IF;

THEO SÁT

Hỏi: Ví dụ, trong đó tôi có 'JM' tôi muốn thủ tục chọn tất cả các bản ghi, đó có phải là một cái gì đó có thể được thực hiện trong điều này? Say for instance, where i have 'JM' i wished for the procedure to select all the records, is that something that can be done within this?

A: Có. Ví dụ, giả sử nếu tham số đầu vào có "giá trị đặc biệt" của

   SET ls_engineer = IFNULL[engineer,'JM'];
0, bạn không muốn có bất kỳ hạn chế nào trên cột
   SET ls_engineer = IFNULL[engineer,'JM'];
5, bạn có thể điều chỉnh truy vấn bằng cách thêm hoặc điều kiện vào mệnh đề WHERE ...
Yes. Let's say, for example, if the input parameter has the "special value" of
   SET ls_engineer = IFNULL[engineer,'JM'];
0, you don't want any restriction on the
   SET ls_engineer = IFNULL[engineer,'JM'];
5 column at all, you could tweak the query by adding an OR condition to the WHERE clause...

WHERE ep.engineer = ls_engineer
   OR engineer = 'JM'

Nếu tham số đầu vào

   SET ls_engineer = IFNULL[engineer,'JM'];
6 có giá trị
   SET ls_engineer = IFNULL[engineer,'JM'];
0, thì vị từ sau
   SET ls_engineer = IFNULL[engineer,'JM'];
8 sẽ trả về tất cả Điều khoản sẽ đúng cho tất cả các hàng.

Nhưng tôi sẽ đề xuất rằng

   SET ls_engineer = IFNULL[engineer,'JM'];
1 sẽ phù hợp hơn
   SET ls_engineer = IFNULL[engineer,'JM'];
0 như một giá trị "trả về tất cả các hàng" đặc biệt cho đối số đầu vào, không cần giá trị "mặc định" cho tham số đầu vào, tức là không cần dịch NULL thành NULL
   SET ls_engineer = IFNULL[engineer,'JM'];
0. Nhưng điều đó thực sự phụ thuộc vào trường hợp sử dụng của bạn, nhưng bạn có thể xem xét bỏ qua giá trị mặc định của
   IF [ engineer IS NULL ] THEN
      SET ls_engineer = 'JM';
   ELSE
      SET ls_engineer = engineer;
   END IF;
3 và chỉ làm một cái gì đó như thế này trong truy vấn của bạn:

WHERE ep.engineer = engineer
   OR engineer IS NULL

Q: Lý do/ý nghĩa cho tiền tố

   IF [ engineer IS NULL ] THEN
      SET ls_engineer = 'JM';
   ELSE
      SET ls_engineer = engineer;
   END IF;
4 là gì? What is the reason/meaning for the
   IF [ engineer IS NULL ] THEN
      SET ls_engineer = 'JM';
   ELSE
      SET ls_engineer = engineer;
   END IF;
4 prefix?

A:

Tiền tố

   IF [ engineer IS NULL ] THEN
      SET ls_engineer = 'JM';
   ELSE
      SET ls_engineer = engineer;
   END IF;
4 chỉ là một ký hiệu kiểu Hungary mà tôi đã sử dụng từ ngày Oracle PL/SQL; Tôi chỉ tìm thấy đó là một cách thuận tiện để giúp theo dõi phạm vi và tạo các tên biến không xung đột với các tên biến khác hoặc với tên cột trong SQL.

Trong một câu lệnh SQL, tôi có thể đủ điều kiện tên cột để tránh sự mơ hồ, nhưng không có cách nào để đủ điều kiện các biến [ngoài việc sử dụng các tham số liên kết].

Và tôi có thể xác định một biến cục bộ có cùng tên với biến toàn cầu và biến ghi đè biến cục bộ [ẩn] của tôi là biến toàn cầu, thường không phải là điều tôi muốn.

Tôi thực sự không phải là một fan hâm mộ của ký hiệu Hungary, đặc biệt không phải là kiểu Windows

   IF [ engineer IS NULL ] THEN
      SET ls_engineer = 'JM';
   ELSE
      SET ls_engineer = engineer;
   END IF;
6 và
   IF [ engineer IS NULL ] THEN
      SET ls_engineer = 'JM';
   ELSE
      SET ls_engineer = engineer;
   END IF;
7, nhưng ký hiệu Hungary là một sự tiện lợi cho tôi trong Oracle PL/SQL.

Tôi đã sử dụng chữ cái đầu tiên để xác định phạm vi của biến, "l" cho cục bộ, "g" cho toàn cầu "," cho đối số. Bức thư tiếp theo là tốc ký cho kiểu dữ liệu của biến, "s" cho loại varchar [chuỗi], "d" cho ngày, "n" cho số.

Vì vậy, "AS_" là một chuỗi đối số, "ld_" là cho một ngày địa phương, v.v.

Theo dõi các kiểu dữ liệu là rất quan trọng để tránh chuyển đổi dữ liệu tiềm ẩn ngoài ý muốn trong SQL và thực hiện một chuyển đổi rõ ràng đã nhìn sai "sai", ví dụ: Không cần phải có một to_date [] xung quanh một "ngày" hoặc một to_number xung quanh một số, nhưng cần phải chuyển một chuỗi vào số, v.v.

Để 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 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
  • Làm thế nào để sử dụng cho vòng lặp trong thủ tục lưu trữ MySQL?
  • Đặt điều kiện theo quy trình lưu trữ MySQL

Làm cách nào để kiểm tra xem một biến là null trong mysql?

Hàm MySQL isnull [] được sử dụng để kiểm tra xem biểu thức có phải là null hay không. Hàm này trả về 1 nếu biểu thức được truyền là null, nếu không nó trả về 0.MySQL ISNULL[] function is used for checking whether an expression is NULL or not. This function returns 1 if the expression passed is NULL, else it returns 0.

Làm cách nào để kiểm tra xem một thủ tục được lưu trữ có phải là tham số null trong SQL Server không?

Trong ví dụ này, chúng tôi đã sử dụng chức năng IIF cùng với isnull.Đầu tiên, hàm isnull kiểm tra xem giá trị tham số có phải là null hay không.Nếu đúng, nó sẽ thay thế giá trị bằng chuỗi trống hoặc trống.IIF Function along with ISNULL. First, the ISNULL function checks whether the parameter value is NULL or not. If True, it will replace the value with Empty string or Blank.

Làm thế nào để tham số kiểm tra không phải là NULL trong SQL?

If [ @item1 không phải là null] hoặc [len [ @item1]> 0] chọn @sql = 'select * từ test1' other chọn @sql = 'select * từ test2' in @sql; @item1 là nvarchar [1000]loại hình.Đó là một nơi nào đó là một chức năng trong SQL để xác minh xem một chuỗi là null hoặc trống hoặc tôi đã mắc một nơi nào đó là một sai lầm? @item1 is NVARCHAR[1000] type. It is somewhere a function in sql to verify if a string is null or empty OR I made somewhere a mistake ?

Làm thế nào để bạn trả về tất cả các bản ghi nếu tham số là null?

Bên trong quy trình được lưu trữ, giá trị tham số được kiểm tra đầu tiên cho null bằng hàm isnull và sau đó kiểm tra xem nó có trống không [trống].Nếu tham số có giá trị thì chỉ có các bản ghi phù hợp sẽ được trả về, trong khi nếu tham số là null hoặc trống [trống] thì tất cả các bản ghi từ bảng sẽ được trả về.if the parameter is Null or Blank [Empty] then all records from the table will be returned.

Bài Viết Liên Quan

Chủ Đề