Heim Datenbank MySQL-Tutorial 详解MySQL存储过程参数有三种类型(in、out、inout)_MySQL

详解MySQL存储过程参数有三种类型(in、out、inout)_MySQL

Jun 01, 2016 pm 01:22 PM
c语言

bitsCN.com 一、MySQL 存储过程参数(in)
MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible)。

drop procedure if exists pr_param_in;
create procedure pr_param_in
(
in id int -- in 类型的 MySQL 存储过程参数
)
begin
if (id is not null) then
set id = id + 1;
end if;
select id as id_inner;
end;
set @id = 10;
call pr_param_in(@id);
select @id as id_out;
mysql> call pr_param_in(@id);

+----------+
| id_inner |
+----------+
| 11 |
+----------+
mysql> select @id as id_out;
+--------+
| id_out |
+--------+
| 10 |
+--------+
可以看到:用户变量 @id 传入值为 10,执行存储过程后,在过程内部值为:11(id_inner),但外部变量值依旧为:10(id_out)。

二、MySQL 存储过程参数(out)
MySQL 存储过程 “out” 参数:从存储过程内部传值给调用者。在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值。

drop procedure if exists pr_param_out;
create procedure pr_param_out
(
out id int
)
begin
select id as id_inner_1; -- id 初始值为 null
if (id is not null) then
set id = id + 1;
select id as id_inner_2;
else
select 1 into id;
end if;
select id as id_inner_3;
end;
set @id = 10;
call pr_param_out(@id);
select @id as id_out;
mysql> set @id = 10;
mysql>
mysql> call pr_param_out(@id);

+------------+
| id_inner_1 |
+------------+
| NULL |
+------------+
+------------+
| id_inner_3 |
+------------+
| 1 |
+------------+
mysql> select @id as id_out;
+--------+
| id_out |
+--------+
| 1 |
+--------+
可以看出,虽然我们设置了用户定义变量 @id 为 10,传递 @id 给存储过程后,在存储过程内部,id 的初始值总是 null(id_inner_1)。最后 id 值(id_out = 1)传回给调用者。

三、MySQL 存储过程参数(inout)
MySQL 存储过程 inout 参数跟 out 类似,都可以从存储过程内部传值给调用者。不同的是:调用者还可以通过 inout 参数传递值给存储过程。

drop procedure if exists pr_param_inout;
create procedure pr_param_inout
(
inout id int
)
begin
select id as id_inner_1; -- id 值为调用者传进来的值
if (id is not null) then
set id = id + 1;
select id as id_inner_2;
else
select 1 into id;
end if;
select id as id_inner_3;
end;
set @id = 10;
call pr_param_inout(@id);
select @id as id_out;
mysql> set @id = 10;
mysql>
mysql> call pr_param_inout(@id);

+------------+
| id_inner_1 |
+------------+
| 10 |
+------------+
+------------+
| id_inner_2 |
+------------+
| 11 |
+------------+
+------------+
| id_inner_3 |
+------------+
| 11 |
+------------+
mysql>
mysql> select @id as id_out;
+--------+
| id_out |
+--------+
| 11 |
+--------+
从结果可以看出:我们把 @id(10),传给存储过程后,存储过程最后又把计算结果值 11(id_inner_3)传回给调用者。 MySQL 存储过程 inout 参数的行为跟 C 语言函数中的引用传值类似。

通 过以上例子:如果仅仅想把数据传给 MySQL 存储过程,那就使用“in” 类型参数;如果仅仅从 MySQL 存储过程返回值,那就使用“out” 类型参数;如果需要把数据传给 MySQL 存储过程,还要经过一些计算后再传回给我们,此时,要使用“inout” 类型参数。bitsCN.com

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Die Bedeutung von Strlength in C -Sprache Die Bedeutung von Strlength in C -Sprache Apr 03, 2025 pm 06:18 PM

Die Funktion strlen () erhält die Länge der Zeichenfolge, ohne das leere Zeichen '\ 0': 1. Berechnen Sie die Anzahl der Zeichen ohne leere Zeichen; 2. über die Saite iterieren, bis das leere Zeichen gefunden wird; 3. Geben Sie die Länge der Zeichenfolge zurück und geben Sie size_t ein.

Was bedeutet C -Sprache des Mittelwerts? Was bedeutet C -Sprache des Mittelwerts? Apr 03, 2025 pm 06:51 PM

Der Operator verweist auf ein Mitglied einer Struktur oder Gewerkschaft und wird als Expr. -Member verwendet, das zum Zugriff auf den Wert eines Mitglieds verwendet wird.

Was bedeutet Schlaf in der C -Sprache Was bedeutet Schlaf in der C -Sprache Apr 03, 2025 pm 06:33 PM

Die Schlaffunktion wird in der C -Sprache verwendet, um die angegebene Anzahl von Sekunden für die Programmausführung zu pausieren, und die Syntax ist Schlaf (unsignierte int Sekunden). Wenn Sekunden 0 ist, kehrt die Funktion sofort zurück, da die Funktion den Vorgang für die angegebene Anzahl von Sekunden annimmt und die tatsächliche Pause zurückgibt.

Was bedeutet U16 in der C -Sprache Was bedeutet U16 in der C -Sprache Apr 03, 2025 pm 06:42 PM

In der C-Sprache stellt U16 eine nicht signierte 16-Bit-Ganzzahl dar, die zum Speichern nicht negativer Ganzzahlen verwendet wird. Seine Eigenschaften umfassen: 1. Größe: 16-Bit; 2. Bereich: 0 bis 65535; 3.. Unsigned: Es können nur positive Zahlen gespeichert werden, 0 ist der Mindestwert und 65535 der Maximalwert.

Was bedeutet HTOC in der C -Sprache Was bedeutet HTOC in der C -Sprache Apr 03, 2025 pm 06:45 PM

Die HTOC -Funktion wandelt eine hexadezimale Zeichenfolge in eine Ganzzahl um. Es scannt das Zeichenfolgencharakter nach Charakter, multipliziert jede hexadezimale Zahl mit der entsprechenden Leistung gemäß ihrer Position in der Zeichenfolge und sammelt es dann, um das Endergebnis zu erhalten.

Die Bedeutung der Rückkehr in der C -Sprache Die Bedeutung der Rückkehr in der C -Sprache Apr 03, 2025 pm 06:54 PM

Das Rückgabe -Schlüsselwort wird in der C -Sprache verwendet, um einen Wert aus einer Funktion zurückzugeben, und die Syntax ist die Rückgabe [Ausdruck]. Es kann verwendet werden, um den Rückgabewert einer Funktion anzugeben (falls nicht angegeben, implizit zurücksenden 0), die Funktionsausführung, den Passwert und die Verhandlung Fehler.

Konzept der C -Sprachfunktion Konzept der C -Sprachfunktion Apr 03, 2025 pm 10:09 PM

C -Sprachfunktionen sind wiederverwendbare Codeblöcke. Sie erhalten Input, führen Vorgänge und Rückgabergebnisse aus, die modular die Wiederverwendbarkeit verbessert und die Komplexität verringert. Der interne Mechanismus der Funktion umfasst Parameterübergabe-, Funktionsausführung und Rückgabeteile. Der gesamte Prozess beinhaltet eine Optimierung wie die Funktion inline. Eine gute Funktion wird nach dem Prinzip der einzigen Verantwortung, der geringen Anzahl von Parametern, den Benennungsspezifikationen und der Fehlerbehandlung geschrieben. Zeiger in Kombination mit Funktionen können leistungsstärkere Funktionen erzielen, z. B. die Änderung der externen Variablenwerte. Funktionszeiger übergeben Funktionen als Parameter oder speichern Adressen und werden verwendet, um dynamische Aufrufe zu Funktionen zu implementieren. Das Verständnis von Funktionsmerkmalen und Techniken ist der Schlüssel zum Schreiben effizienter, wartbarer und leicht verständlicher C -Programme.

Was bedeutet Swap in der C -Sprache Was bedeutet Swap in der C -Sprache Apr 03, 2025 pm 06:27 PM

In der C -Sprache wird der Swap -Anweisungen verwendet, um die Werte von zwei Variablen auszutauschen: Swap (x, y): Swap (x, y): Swap Die Werte von x und y können durch Verwendung von temporären Variablen oder Bitvorgängen erreicht werden.

See all articles