Maison > Article > base de données > Quelles sont les méthodes d'attribution de valeurs aux variables dans les procédures stockées Oracle ?
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".
L'environnement d'exploitation de ce tutoriel : système Windows 7, version Oracle 11g, ordinateur Dell G3.
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!