Maison  >  Article  >  base de données  >  Quelle est la procédure stockée de la base de données Oracle ?

Quelle est la procédure stockée de la base de données Oracle ?

青灯夜游
青灯夜游original
2020-08-22 15:19:545107parcourir

Procédure stockée de base de données Oracle : un ensemble d'instructions SQL pour remplir des fonctions spécifiques, compilées et stockées dans la base de données. Une procédure stockée est une procédure écrite par le contrôle de flux et les instructions SQL. Cette procédure est compilée, optimisée et stockée dans le serveur de base de données. Elle ne doit être appelée que lorsque le programme d'application l'utilise.

Quelle est la procédure stockée de la base de données Oracle ?

La procédure stockée (procédure stockée) est un ensemble d'instructions SQL permettant d'exécuter des fonctions spécifiques, qui sont compilées et stockées dans la base de données. L'utilisateur exécute une procédure stockée en spécifiant son nom et en donnant des paramètres (si la procédure stockée a des paramètres). Les procédures stockées constituent un objet important dans la base de données et toute application de base de données bien conçue doit utiliser des procédures stockées.

Une procédure stockée est une procédure écrite par le contrôle de flux et les instructions SQL. Cette procédure est compilée et optimisée et stockée dans le serveur de base de données. Elle ne doit être appelée que lorsque l'application l'utilise. Dans ORACLE, plusieurs procédures liées peuvent être combinées pour former un package de programme.

Avantages :

1. Les procédures stockées ne sont compilées que lors de leur création. Il n'est pas nécessaire de recompiler chaque fois que la procédure stockée est exécutée dans le futur. chaque fois qu'elles sont exécutées, utilisez donc des procédures stockées pour augmenter la vitesse d'exécution de la base de données.

2. Lors de l'exécution d'opérations complexes sur la base de données (telles que Mettre à jour, Insérer, Requête et Supprimer sur plusieurs tables), cette opération complexe peut être encapsulée dans une procédure stockée et combinée avec le traitement des transactions fourni par le utilisation de la base de données.

3. Les procédures stockées peuvent être réutilisées, ce qui peut réduire la charge de travail des développeurs de bases de données.

4. Haute sécurité, vous pouvez définir que seul un certain utilisateur a le droit d'utiliser le processus stocké spécifié.

Pour faire simple, vous écrivez une procédure stockée sur votre machine. Cette procédure stockée est placée dans un serveur de base de données distant comme les données de ces tables, mais il s'agit de code exécutable et d'autres utilisateurs qui peuvent s'y connecter. le serveur de base de données peut appeler la procédure stockée que vous avez écrite

. Sa fonction est de masquer les détails, le code de la procédure stockée que vous avez écrit peut être compliqué, mais il est très simple pour d'autres de l'appeler. . Il n'est pas nécessaire de savoir précisément comment cela se fait, et plusieurs instructions peuvent être complétées en même temps

Syntaxe de base

CREATE [OR REPLACE] PROCEDURE 存储过程名[(参数[IN|OUT|IN OUT] 数据类型...)] 
{AS|IS} 
[说明部分] 
BEGIN 
可执行部分 
[EXCEPTION 
错误处理部分] 
END [过程名];

1. . Le mot-clé facultatif OR REPLACE signifie que si la procédure stockée existe déjà, écrasez-la par une nouvelle procédure stockée, généralement une reconstruction de la procédure stockée utilisateur.

2. La partie paramètre est utilisée pour définir plusieurs paramètres (s'il n'y a pas de paramètres, ils peuvent être omis). Les paramètres se présentent sous trois formes : IN, OUT et IN OUT. Si la forme du paramètre n'est pas spécifiée, sa valeur par défaut est IN.

3. Le mot-clé AS peut également être écrit IS, suivi de la partie description du processus, où vous pouvez définir les variables locales du processus.

4. Vous pouvez utiliser n'importe quel éditeur de texte ou directement dans l'environnement SQLPLus pour écrire des procédures stockées. Les procédures stockées écrites doivent être compilées dans l'environnement SQLPLus pour générer le code compilé. être stocké dans la base de données pendant le processus. La procédure stockée compilée avec succès peut être appelée dans l'environnement ORacle.

5. Une procédure stockée peut être supprimée lorsqu'elle n'est plus nécessaire. La personne qui supprime une procédure stockée est le créateur de la procédure ou une personne disposant de l'autorisation système DROP ANY PROCEDURE. La syntaxe de suppression d'une procédure stockée est la suivante :

DROP PROCEDURE 存储过程名;

6. Si vous souhaitez recompiler une procédure stockée, vous ne pouvez être que le créateur de la procédure ou une personne disposant de l'autorisation système ALTER ANY PROCEDURE. La syntaxe est la suivante :

ALTER PROCEDURE 存储过程名 COMPILE;

7. La personne qui exécute (ou appelle) la procédure stockée est le créateur du processus ou la personne qui dispose de l'autorisation système EXECUTE ANY PROCEDURE, ou la personne qui en bénéficie. l'autorisation EXECUTE du propriétaire. La méthode d'exécution est la suivante :

Méthode 1 :

EXECUTE 模式名.存储过程名[(参数...)];

Méthode 2 :

BEGIN 
模式名.存储过程名[(参数...)]; 
END;

8 Les paramètres passés doivent être cohérents avec le type, le numéro et l'ordre des paramètres définis. (si Si le paramètre définit une valeur par défaut, le paramètre peut être omis lors de l'appel). Les paramètres peuvent être des variables, des constantes ou des expressions.

9. La différence entre tel et tel : les deux peuvent être utilisés dans des procédures stockées (procédures) et des fonctions (fonctions), mais l'utilisation d'IS ne pourra pas utiliser le mode débogage pour déboguer la fonction stockée ; la vue utilise uniquement AS mais pas IS Dans le curseur (CURSOR), vous ne pouvez utiliser que IS mais pas AS.

10. Fonction de décodage dans Oracle

Explication de la signification :

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)

La signification de cette fonction est la suivante :

IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF
decode(字段或字段的运算,值1,值2,值3)

Le résultat de l'exécution de ceci la fonction est, lorsque lorsque la valeur du champ ou de l'opération sur le terrain est égale à la valeur 1, la fonction renvoie la valeur 2, sinon elle renvoie la valeur 3

Bien sûr, la valeur 1, la valeur 2 et la valeur 3 peuvent également be expressions. Cette fonction rend certaines instructions SQL beaucoup plus simples

Exemple :

select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值

la fonction sign() renvoie respectivement 0, 1, -1 selon qu'une valeur est 0, un nombre positif ou un nombre négatif

Par exemple :

Variable 1=10, variable 2=20

Puis signe(variable 1-variable 2) renvoie -1, et le résultat du décodage est "variable 1", ce qui permet d'obtenir une comparaison de petite valeur.

11. Fonction nvl

Le format de la fonction NVL est le suivant : NVL(expr1,expr2)

La signification est : si le premier paramètre d'oracle est vide, puis le deuxième est affiché. La valeur du paramètre Si la valeur du premier paramètre n'est pas vide, la valeur originale du premier paramètre est affichée.

NVL2函数的格式如下:NVL2(expr1,expr2, expr3)

含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。

NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。

Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。

格式如下:

Coalesce(expr1, expr2, expr3….. exprn)

表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。

返回表达式中第一个非空表达式,如有以下语句:   

SELECT COALESCE(NULL,NULL,3,4,5) FROM dual

其返回结果为:3

如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值

12、max函数

对字符型数据的最大值,是按照首字母由A~Z的顺序排列,越往后,其值越大。当然,对于汉字则是按照其全拼拼音排列的,若首字符相同,则比较下一个字符,以此类推。

13、随机抽取N条记录

https://blog.csdn.net/bbliutao/article/details/7727322

14、untion all

union all,解释为联合所有。

Union解释为联合。union或者Union all实现把前后两个select集合的数据联合起来,组成一个结果集查询输出。这就要求联合前后的结果集,需要分别有相同的输出字段的数目,并且对应的字段类型要相同。
SELECT column1, column2 from table1 union (all) select column1, column2 from table2

以上语句要求量表的column1字段类型相同,column2类型相同。而且每个查询的数目都是一样的。UNION ALL和UNION的差别就在ALL上面,第一个叫联合所有,说明会显示前后两个查询所有的数据,而UNION没有ALL(所有)这个单词,实现将前后两个查询的数据联合到一起后,去掉重复的数据显示

推荐教程:《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!

Déclaration:
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