La structure de la procédure stockée Oracle contient trois parties : 1. Déclaration du processus ; 2. Partie du processus d'exécution ; 3. Exception de procédure stockée si vous souhaitez améliorer la tolérance aux pannes du script et la commodité de. débogage, écriture des exceptions, gestion.
L'environnement d'exploitation de ce tutoriel : système Windows 7, version Oracle 11g, ordinateur Dell G3.
Qu'est-ce qu'une procédure stockée
Procédure stockée : l'Encyclopédie Baidu l'explique ainsi, une procédure stockée (Stored Procedure) est un ensemble d'instructions SQL dans un grand système de base de données pour remplir des fonctions spécifiques, stockées dans la base de données. , il n'est pas nécessaire de recompiler lors d'un nouvel appel après la première compilation. L'utilisateur appelle la procédure stockée en spécifiant le nom de la procédure stockée et en donnant des paramètres (si la procédure stockée a des paramètres).
Pour faire simple, il s'agit d'une instruction SQL qui fait une chose spécifiquement.
Il peut être appelé par la base de données elle-même ou par un programme Java.
Les procédures stockées sont des procédures dans la base de données Oracle.
Structure de la procédure stockée
(1) Structure de base
La procédure stockée Oracle contient trois parties : la déclaration du processus, la partie du processus d'exécution, l'exception de la procédure stockée (inscriptible ou non, pour améliorer la tolérance aux pannes du script et Pour faciliter le débogage, écrivez la gestion des exceptions)
(2) Procédure stockée sans paramètres
/** name_procedure就是自己自定义的存储过程名 */ create or replace procedure name_procedure AS/IS 变量名1 数据类型; 变量名2 数据类型; BEGIN --要处理的业务逻辑 EXCEPTION --存储过程异常 END name_procedure;
(3) Procédure stockée avec paramètres
Procédure stockée avec paramètres ordinaires
/* age 类型为number 初始化为20; */ CREATE OR REPLACE PROCEDURE name_procedure (param1 TYPE) AS/IS name varchar(20); age number :=20; BEGIN --业务处理..... END ;
Procédure stockée avec paramètres et Perform. assignation
CREATE OR REPLACE PROCEDURE 存储过程名称( s_no in varchar, s_name out varchar, s_age number) AS total NUMBER := 0; BEGIN SELECT COUNT(1) INTO total FROM student s WHERE s.age=s_age; dbms_output.put_line('符合该年龄的学生有'||total||'人'); EXCEPTION WHEN too_many_rows THEN DBMS_OUTPUT.PUT_LINE('返回值多于1行'); END
Le paramètre IN représente le paramètre d'entrée et est le mode par défaut du paramètre.
OUT représente le paramètre de valeur de retour et le type peut utiliser n'importe quel type légal dans Oracle.
Les paramètres définis en mode OUT ne peuvent se voir attribuer une valeur qu'à l'intérieur du corps du processus, ce qui signifie que le paramètre peut renvoyer une certaine valeur au processus qui l'a appelé
IN OUT signifie que le paramètre. peut transmettre une valeur au processus, ou il peut transmettre une certaine valeur
Ligne 7 : Instruction de requête, en utilisant le paramètre s_age comme condition de filtre, le mot-clé INTO et en attribuant les résultats trouvés à la variable totale.
Ligne 8 : Résultats de la requête de sortie, "||" est utilisé pour connecter des chaînes dans la base de données
Ligne 9-11 : Effectuer la gestion des exceptions
Syntaxe de la procédure stockée
Opérateur (1)
(2) Instruction SELECT INTO STATEMENT
Attribuer les résultats de la requête à une ou plusieurs variables
Exigence : connaître le nom, l'âge et le nom de l'élève avec un score de 100 points . Lieu de naissance
CREATE OR REPLACE PROCEDURE DEMO_CDD1 IS s_name VARCHAR2; --学生名称 s_age NUMBER; --学生年龄 s_address VARCHAR2; --学生籍贯 BEGIN --给单个变量赋值 SELECT student_address INTO s_address FROM student where student_grade=100; --给多个变量赋值 SELECT student_name,student_age INTO s_name,s_age FROM student where student_grade=100; --输出成绩为100分的那个学生信息 dbms_output.put_line('姓名:'||s_name||',年龄:'||s_age||',籍贯:'||s_address); END
(3) Select Statement
//if 后面一定要添加THEN 相当于Java中的 大括号 IF s_sex=1 THEN dbms_output.put_line('这个学生是男生'); ELSE IF THEN dbms_output.put_line('这个学生是女生'); ELSE dbms_output.put_line('这个学生性别错误'); END IF
(4) Loop Statement
a.Basic loop
LOOP IF 表达式 THEN EXIT; END IF END LOOP;
b.while loop
WHILE 表达式 LOOP dbms_output.put_line('haha'); END LOOP;
c.for loop
//a 1 到 20 范围 FOR a in 10 .. 20 LOOP dbms_output.put_line('value of a: ' || a); END LOOP;
Tutoriel recommandé : "Tutoriel Oracle》
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!