当前位置:网站首页>Base de données Advanced Learning Notes - - SQL statements
Base de données Advanced Learning Notes - - SQL statements
2022-07-06 11:09:00 【C'est du gâteau de riz.】
sqlClassification de
1.Statiquesql:select * from emp where empno=7788;
--StatiquesqlSe réfère àPL/SQLUtilisé dans le blocsqLLes déclarations sont claires au moment de la compilation,Ce qui est fait est de déterminer l'objet
2.Dynamiquesql:select * from emp where empno='Paramètres';
--DynamiquesqlC'est - à - direPL/SQLTemps de compilation des blocssqlLes déclarations sont incertaines,Si différentes opérations sont effectuées en fonction des paramètres entrés par l'utilisateur
(Le paramètre peut êtresqlDéclarations,Nombre,Texte)
------Dynamiquesql-----
Dynamiquesql:C'est ça.sqlÉcrit dans une chaîne,Résoudre l'exécution de la chaîne dans la procédure stockéesql.
--(1)Dynamique de mise en œuvresqlPlusieurs façons de
(1)&Entrée des paramètres
(2)Utiliseropen-for,fetchEtcloseDéclarations(Curseur)
Pour le traitement d'une requête multiligne dynamique,Peut être utiliséoPEN-FORInstruction ouvrir le curseur,
UtiliserFETCHInstruction extraction circulaire des données,Utilisation finaleCLOSEInstruction fermer le curseur.
(3)Utiliser des déclarations dynamiques en vrac
C'est - à - dire en mouvementsqlUtilisé dansBULKClause,Ou lors de l'utilisation d'une variable curseurfetchUtilisé dansBULK,OuFORALLUtilisé dans l'énoncé
(4)Utilisation du systèmePL/soLSacDBMs_sQLPour réaliser la dynamiquesQL
(5)UtiliserEXECUTE IMMEDIATEDéclarations
Y compris:DDLDéclarations,DCLDéclarations,DNLDéclarations et une seule lignesELECTDéclarations.Cette méthode ne peut pas être utilisée pour traiter des déclarations de requête multilignes
--DynamiquesqlLe rôle de
(1)Peut soutenirDDlDéclarations,StatiquesqlNe peut supporter queDMLDéclarations
(2)SoutienWEB Volonté d'interroger le programme de référence
(3) La logique d'entreprise peut d'abord être placée dans le tableau , Puis compilez dynamiquement
--UtiliserEXECUTE IMMEDIATE Dynamique d'exécution des déclarations sql-----------
Statiquesql Pour s'intégrer dans plsqlDans la Déclaration,Et dynamiquesql L'instruction produit différentes choses au moment de l'exécution selon les circonstances sqlDéclarations.
Syntaxe:
execute immediate Chaîne d'instruction dynamique
[into Liste des variables]
[using Liste des paramètres]
Explication:
Chaîne d'instruction dynamique : Stocker les sqlDéclarations ouplsqlVariable de chaîne pour le bloc
into: Pour stocker les résultats de la requête
using:Valeur de passage du paramètre
Dynamiquesql Format du paramètre de transfert :[:Nom du paramètre], Le paramètre doit être utilisé au moment de l'exécution usingTransmission de la valeur
--Utiliser la dynamiquesql Action créer une table -------------
—Oui.PL/sQLEn programmation,InDML Et les déclarations de contrôle des transactions peuvent être utilisées directement sql,
MaisDDL Les déclarations et les déclarations de contrôle du système ne peuvent pas être faites dans PL/sqlUtilisation directe,
Pour atteindre cet objectifpL/sqlUtilisé dansDDL Déclarations et déclarations de contrôle du système , Vous pouvez utiliser Dynamic sqlPour réaliser
--Mauvaise écriture
begin
create tables test1000 as select * from emp;
end;
--La bonne écriture1( Aucun paramètre n'est transmis et aucune valeur n'est attribuée )
begin
execute immediate 'create table test1000 as select * from emp ';
end;
select * from test1000;
--La bonne écriture2( Exécuter dynamiquement un ensemble de résultats stockés dans une variable )
declare
sqls varchar2(100);
begin
sqls:='create table test1001 as select * from emp ';
execute immediate sqls;
end;
select * from test1001;
--------Dynamiquesql Passer à l'assignation des paramètres -----------
using Passer le ginseng
into Affectation
Format des paramètres[:Paramètres]
--- Demander le salaire par numéro d'employé
---Écriture 3: Passer à l'assignation des paramètres
declare
v_sal emp.sal%type;
begin
--Dynamique de mise en œuvresql
execute immediate 'select sal from emp where empno=:Paramètres'
--Affectation des variables
into v_sal
--Paramètres de réception
using &Entrez le numéro de l'employé;
dbms_output.put_line('Salaire'||v_sal);
end;
---------Dynamiquesql L'instruction ne transmet pas de paramètres ,Assigner seulement des valeurs--------------
---Exemple: Demander le salaire par numéro d'employé
-----Rédaction IV:Pas de ginseng.,Assigner seulement des valeurs
declare
v_sal emp.sal%type;
begin
execute immediate 'select sal from emp where empno=7788'
into v_sal;
dbms_output.put_line(v_sal);
end;
------Exemple----------
--Créer une procédure stockée, En passant le nom de la table , Supprimer le tableau correspondant (Méthodes2)??????
create or replace procedure truncate_table(table_name in varchar2)
is
sqls varchar2(100);
begin
sqls:='truncate table'||table_name;
execute immediate sqls;
end;
begin
truncate_table('test1001');
end;
select * from test1001;
--Syntaxe pour créer une table----------------------------
create table Nom du tableau(
Nom du champ Type de champ)
--Créer une table: Créer une table basée sur des paramètres tels que le nom de la table et le nom du champ entrés par l'utilisateur
create or replace procedure create_table(
table_name in varchar2,----Nom du tableau
field1 in varchar2,---Champ1
field1type in varchar2,---Champ1Type de données pour
field2 in varchar2,---Champ2
field2type in varchar2,---Champ2Type de données pour
field3 in varchar2,---Champ3
field3type in varchar2---Champ3Type de données pour Le dernier argument n'est pas suivi d'une virgule
)
is
sqls varchar2(500);
begin
sqls:='create table'||' '||table_name||'('||field1||' '||field1type||','||field2||' '
||field2type||','||field3||' '||field3type||')';
execute immediate sqls;
end;
-- Appeler la procédure stockée pour créer une table ??????---Permissions insuffisantes(sysUtilisateurs)
begin
create_table('test_table','id','varchar2(100)','name','varchar2(100)','age','varchar2(100)');
end;
--Insérer des données(sysUtilisateurs)---------------------------------------
create or replace procedure insert_table(
id in varchar2,
name in varchar2,
age in varchar2
)
is
sqls varchar2(500);
begin
sqls:='insert into test_table values(:1,:2,:3)';
execute immediate sqls using id,name,age;
end;
--Appelez
begin
insert_table('1','Petit Rouge.','18');
end;
select * from test_table;
边栏推荐
- 安全测试涉及的测试对象
- QT creator create button
- Kubesphere - deploy the actual combat with the deployment file (3)
- Django运行报错:Error loading MySQLdb module解决方法
- 01项目需求分析 (点餐系统)
- 虚拟机Ping通主机,主机Ping不通虚拟机
- [C language foundation] 04 judgment and circulation
- Knowledge Q & A based on Apache Jena
- 02-项目实战之后台员工信息管理
- Ansible practical Series II_ Getting started with Playbook
猜你喜欢
学习问题1:127.0.0.1拒绝了我们的访问
A brief introduction to the microservice technology stack, the introduction and use of Eureka and ribbon
Swagger、Yapi接口管理服务_SE
【博主推荐】C#生成好看的二维码(附源码)
[Thesis Writing] how to write function description of jsp online examination system
LeetCode #461 汉明距离
Solution: log4j:warn please initialize the log4j system properly
35 is not a stumbling block in the career of programmers
Esp8266 at+cipstart= "", "", 8080 error closed ultimate solution
Picture coloring project - deoldify
随机推荐
01 project demand analysis (ordering system)
Invalid global search in idea/pychar, etc. (win10)
Ansible practical Series II_ Getting started with Playbook
Are you monitored by the company for sending resumes and logging in to job search websites? Deeply convinced that the product of "behavior awareness system ba" has not been retrieved on the official w
打开浏览器的同时会在主页外同时打开芒果TV,抖音等网站
记一次某公司面试题:合并有序数组
One click extraction of tables in PDF
++Implementation of I and i++
JDBC原理
CSDN blog summary (I) -- a simple first edition implementation
Remember the interview algorithm of a company: find the number of times a number appears in an ordered array
Knowledge Q & A based on Apache Jena
CSDN Q & a tag skill tree (V) -- cloud native skill tree
Idea import / export settings file
Swagger、Yapi接口管理服务_SE
[recommended by bloggers] C # generate a good-looking QR code (with source code)
CSDN question and answer module Title Recommendation task (II) -- effect optimization
Mysql21 - gestion des utilisateurs et des droits
[ahoi2009]chess Chinese chess - combination number optimization shape pressure DP
Ubuntu 20.04 安装 MySQL