Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Procedura składowana MySQL z parametrami

Czasami może być konieczne przekazanie danych wejściowych do procedury składowanej w MySQL. W tym artykule przyjrzymy się, jak utworzyć procedurę składowaną MySQL z parametrami i różnymi typami parametrów obsługiwanych w procedurach składowanych.

Procedura składowana MySQL z parametrami

Oto kroki, aby utworzyć procedurę składowaną z parametrami. MySQL obsługuje 3 typy parametrów procedur składowanych — IN, OUT i INOUT. Przyjrzyjmy się każdemu z nich szczegółowo

W - To jest tryb domyślny. W tym trybie instrukcja call musi przekazać argument do procedury składowanej. Ponadto wartość parametru typu IN jest chroniona, co oznacza, że ​​nawet jeśli zmienisz jego wartość wewnątrz procedury składowanej, pozostanie ona niezmieniona poza nią.

WYJŚCIE – Wartość parametru OUT można zmienić wewnątrz procedury składowanej, a jej nowa wartość zostanie przekazana z powrotem do instrukcji call.

INOUT – W takim przypadku instrukcja call może przekazać argument, a procedura składowana może zmodyfikować tę wartość i przekazać ją z powrotem do instrukcji call.

Oto składnia procedury składowanej z parametrami w MySQL.

[IN | OUT | INOUT] parameter_name datatype[(length)]

W powyższym oświadczeniu najpierw określamy typ parametru, a następnie nazwę parametru i typ kolumny.

Procedura składowana MySQL z przykładami parametrów

Spójrzmy na kilka przykładów procedury składowanej z parametrami.

Parametr IN

Oto zapytanie SQL do utworzenia procedury składowanej z parametrem IN.

mysql> DELIMITER //

mysql> CREATE PROCEDURE get_product(
       IN prod_id int
       )
       BEGIN
       SELECT *
        FROM products
       WHERE product_id = prod_id;
       END //

mysql> DELIMITER ;
mysql> call get_product(1);
+------------+--------------+-------+
| product_id | product_name | price |
+------------+--------------+-------+
|          1 | iPhone 11    |   400 |
+------------+--------------+-------+

mysql> call get_product();
ERROR 1318 (42000): Incorrect number of arguments for PROCEDURE sample.get_product; expected 1, got 0

Powyżej zdefiniowaliśmy parametr procedury składowanej IN prod_id . Kiedy przekazujemy jego argument w instrukcji call, procedura składowana zwraca oczekiwane wyniki. Jeśli jednak nie przekażesz argumentu, oznacza to błąd.

Przeczytaj bonus:Jak utworzyć złożony klucz podstawowy w MySQL

Parametr WYJŚCIA

Oto procedura składowana utworzona przy użyciu parametru OUT.

mysql> DELIMITER $$

mysql> CREATE PROCEDURE get_count(
       IN prod_id int,
       OUT total INT
       )
       BEGIN
       SELECT COUNT(*)
       INTO total
       FROM products
       WHERE product_id = prod_id;
       END$$

mysql> DELIMITER ;

mysql> call get_count(1,@total);

mysql> select @total;
+--------+
| @total |
+--------+
|      1 |
+--------+

W powyższej procedurze składowanej definiujemy 2 parametry – parametr IN dla prod_id i parametr OUT do przechowywania wyniku procedury.

Kiedy przekazujemy identyfikator produktu w instrukcji call, nasza procedura składowana oblicza liczbę wierszy pasujących do tego identyfikatora produktu i przechowuje wynik w parametrze OUT total

Przeczytaj bonus:Jak przyciąć tabelę w MySQL

Parametr INOUT

Oto procedura składowana utworzona przy użyciu parametru INOUT.

DELIMITER $$

CREATE PROCEDURE counter(
	INOUT count INT,
    IN increment INT
)
BEGIN
	SET count = count + increment;
END$$

DELIMITER ;

W powyższej procedurze składowanej zdefiniowaliśmy parametr IN przyrost oraz parametr INOUT count który przechowuje wynik procedury składowanej. Nasza procedura składowana zasadniczo dodaje przyrost do liczenia parametr i przechowuje wynik w count parametr.

mysql> SET @count = 10;

mysql> CALL counter(@count,1);

mysql> SELECT @count;
+--------+
| @count |
+--------+
|     11 |
+--------+

Mamy nadzieję, że teraz możesz łatwo utworzyć procedurę składowaną z parametrami w MySQL.

Przeczytaj bonus:MySQL DROP VIEW

Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie UNION ze wzorcem aktywnego rekordu kodeignitera

  2. 3 sposoby na znalezienie wierszy zawierających małe litery w MySQL

  3. Jak wyeksportować bazę danych za pomocą wiersza poleceń

  4. Nie można utworzyć modelu danych encji — przy użyciu MySql i EF6

  5. Użycie if(isset($_POST['submit'])) do niewyświetlania echa, gdy skrypt jest otwarty, nie działa