Maison  >  Article  >  base de données  >  Quelles sont les méthodes d'attribution de valeurs aux variables dans les procédures stockées Oracle ?

Quelles sont les méthodes d'attribution de valeurs aux variables dans les procédures stockées Oracle ?

青灯夜游
青灯夜游original
2022-01-25 16:57:0820863parcourir

Méthodes d'attribution de valeurs aux variables : 1. Utilisez ":=" pour attribuer des valeurs directement, et la syntaxe est "nom de la variable :=valeur ;" 2. Utilisez le "champ de table sélectionné dans la variable à partir de la table". "; 3. Utilisez l'instruction "exécuter immédiatement l'instruction SQL String into variable".

Quelles sont les méthodes d'attribution de valeurs aux variables dans les procédures stockées Oracle ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, version Oracle 11g, ordinateur Dell G3.

Comment déclarer et attribuer des valeurs aux variables de procédure stockée Oracle

1 3 façons de déclarer des variables

Divisé selon la méthode de déclaration du type de données

Méthode 1 : Déclarer directement le type de données

Format : Type de données du nom de la variable (taille)

V_START_DATE VARCHAR2(19);
v_num number;

 Description :

 Lorsqu'il est défini sur le type de chaîne, la taille doit être spécifiée, sinon une erreur sera signalée

 La déclaration de ; les variables doivent être créées avant le mot-clé "begin".

--错误用法
BEGIN
v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';

Deuxième méthode : utiliser l'instruction %TYPE

Format : nom de la variable nom de la table.Nom du champ%TYPE

Signification : le type de données de la variable est cohérent avec le type de données du champ spécifié de la table spécifiée

V_ORGSEQ BASE_ORG_INFO.ORGSEQ%TYPE;

Troisième méthode : utiliser la déclaration %ROWTYPE

 Format : nom de la variable nom de la table%ROWTYPE

Signification : Le type de données de la variable est cohérent avec le type de données de l'enregistrement de ligne spécifié (tous les champs) de la table spécifiée

--VIRTUAL_CARD表整行数据
V_ROW_VIRTUAL_CARD VIRTUAL_CARD%ROWTYPE; 

 Résumé :

 Dans la procédure stockée, lors de la déclaration de variables, vous n'avez pas besoin d'utiliser le mot-clé "DECLARE"  

  Les variables ne sont pas sensibles à la casse

  Les variables doivent être déclarées avant ; utiliser.

2. 3 manières d'assigner des variables

Méthode 1 : affectation directe, utiliser ":="

  Conditions d'utilisation : Applicable aux 2 premières manières de déclarer des variables.

V_ORGID :=  '110';  

 Remarque :

 La variable ne peut pas être directement suivie par une instruction SQL. Le SQL ne sera pas exécuté. Vous pouvez vous référer à la troisième méthode.

--错误用法
V_ORGSEQ := SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO;
--正确用法
V_ORGSEQ := 'SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO';

 La déclaration et l'affectation des variables peuvent se faire ensemble.

--正确用法
v_sql varchar2(100) := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';
BEGIN
 /* 具体业务 */
END;

Méthode 2 : sélectionner un champ de table dans une variable à partir de la table

Variation 1 : interroger un champ spécifié de la table spécifiée

Conditions d'utilisation : Applicable aux 2 premières méthodes de déclaration de variables, vous pouvez utiliser

--根据医疗机构ID查询对应的父机构的机构序列
SELECT ORGSEQ INTO V_ORGSEQ FROM BASE_ORG_INFO
 WHERE ORGID =
       (SELECT PARENTORGID FROM BASE_ORG_INFO WHERE ORGID = V_ORGID);

Transformation Deux : interrogez tous les champs de la table spécifiée

Conditions d'utilisation : Applicable uniquement à la troisième façon de déclarer les variables

--将id=5120的VIRTUAL_CARD表数据赋值给变量V_ROW_VIRTUAL_CARD
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id = 5120;

Description :

Le résultat de la requête ne peut renvoyer qu'un seul enregistrement

Les champs de table interrogés doivent être tous des champs de la table.

 Exemple d'erreur :

--错误举例一:查询的是所有表记录
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;
--错误举例二:查询的是该表的多个字段
SELECT t.id,t.name INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T;  

Méthode 3 : exécuter immédiatement la chaîne d'instruction SQL dans la variable

declare/* 存储过程,不需要声明 */
  v_sql varchar2(100);
  V_ORGSEQ varchar2(100);
begin
  v_sql := 'SELECT ORGSEQ FROM BASE_ORG_INFO where orgcode=to_char(410621101233)';
  --V_ORGSEQ赋值
  execute immediate v_sql INTO V_ORGSEQ;
  --打印结果
  DBMS_OUTPUT.put_line(V_ORGSEQ);
END;

3. Appel de variables

De manière générale, les variables n'ont que ces trois scénarios d'utilisation : affectation, jugement logique. , opérations arithmétiques ;

 Remarque : ne peut pas être utilisée comme colonne de requête

--错误调用
select V_ORGSEQ from dual;

 Comment appeler les variables déclarées à l'aide de %ROWTYPE ?

 En utilisant la méthode "nom de variable. champ de table", vous pouvez obtenir les données représentées par la colonne spécifiée (n'importe quelle colonne) de la ligne spécifiée (ligne de retour) dans le tableau.

--V_ROW_VIRTUAL_CARD赋值
SELECT * INTO V_ROW_VIRTUAL_CARD FROM VIRTUAL_CARD T where t.id = 5120;
--调用
DBMS_OUTPUT.put_line(V_ROW_VIRTUAL_CARD.ID);  

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!

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