Maison > base de données > tutoriel mysql > le corps du texte

Notes d'étude MySQL : procédures stockées

黄舟
Libérer: 2017-02-15 10:57:54
original
971 Les gens l'ont consulté

use test;

drop table if exists t8;
CREATE TABLE t8(s1 INT,PRIMARY KEY(s1));

drop procedure if exists handlerdemo;

DELIMITER $$
CREATE PROCEDURE handlerdemo()
BEGIN
declare xx int default 4;
DECLARE oh_no condition for sqlstate '23000';
#DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @X2=1;
declare exit handler for oh_no set @info='违反主键约束';
SET @X=1;
INSERT INTO t8 VALUES(1);
SET @X=2;
INSERT INTO t8 VALUES(1);
SET @X=3;
END
Copier après la connexion


Appel d'une procédure stockée


/* 调用存储过程*/
CALL handlerdemo();

/* 查看调用存储过程结果*/
SELECT @X,@info;
Copier après la connexion


Expérience :


1. Terminateur d'instruction

Peut-être que MySQL traite les procédures stockées et les fonctions personnalisées comme une seule instruction, donc plusieurs instructions dans la procédure stockée sont séparées par ";". le terminateur.

Généralement, vous pouvez définir un nouveau terminateur avant le démarrage de la procédure stockée, tel que

delimiter //

Une fois la procédure stockée écrite, restaurez la définition : delimiter;


2. Variables

Les variables Mysql sont les mêmes que SQL SERVER, sous la forme de @X, mais aucune déclaration n'est requise, elles peuvent être utilisées. directement.

Dans les procédures stockées, les variables n'ont pas besoin d'être @, mais elles doivent être déclarées. Et l'instruction doit être placée en tête de la procédure stockée (?), comme dans cet exemple, sinon une erreur sera signalée. C'est vraiment étrange. D'une part, des variables peuvent parfois être utilisées sans les déclarer. D'autre part, la position de déclaration doit parfois être limitée, ce qui prête à confusion et semble un peu banal.

Variables à l'intérieur de la procédure stockée, leur portée est limitée à la procédure stockée. Mais ces variables avec @ semblent s'étendre sur les sessions et les connexions, et semblent être des variables globales ? Comme l'exemple ci-dessus.


3. Conditions et traitement

Définir les conditions pour appeler le traitement. Comme dans l'exemple ci-dessus :


DECLARE oh_no condition for sqlstate '23000';
#DECLARE CONTINUE HANDLER FOR SQLSTATE '23000' SET @X2=1;
declare exit handler for oh_no set @info='违反主键约束';
Copier après la connexion


Ce qui précède est le contenu ci-dessus. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www. php.cn) ! Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www.php.cn) !



Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!