当前位置:网站首页>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;
边栏推荐
- Install MySQL for Ubuntu 20.04
- CSDN博文摘要(一) —— 一个简单的初版实现
- [Thesis Writing] how to write function description of jsp online examination system
- 虚拟机Ping通主机,主机Ping不通虚拟机
- Valentine's Day is coming, are you still worried about eating dog food? Teach you to make a confession wall hand in hand. Express your love to the person you want
- 解决扫描不到xml、yml、properties文件配置
- npm一个错误 npm ERR code ENOENT npm ERR syscall open
- Error reporting solution - io UnsupportedOperation: can‘t do nonzero end-relative seeks
- Knowledge Q & A based on Apache Jena
- 记一次某公司面试题:合并有序数组
猜你喜欢
Copie maître - esclave MySQL, séparation lecture - écriture
Data dictionary in C #
Django运行报错:Error loading MySQLdb module解决方法
[recommended by bloggers] C # generate a good-looking QR code (with source code)
Generate PDM file from Navicat export table
[free setup] asp Net online course selection system design and Implementation (source code +lunwen)
Swagger, Yapi interface management service_ SE
Postman environment variable settings
Classes in C #
C language advanced pointer Full Version (array pointer, pointer array discrimination, function pointer)
随机推荐
MySQL flush operation
Dotnet replaces asp Net core's underlying communication is the IPC Library of named pipes
记某公司面试算法题:查找一个有序数组某个数字出现的次数
Software testing - interview question sharing
自动机器学习框架介绍与使用(flaml、h2o)
neo4j安装教程
The virtual machine Ping is connected to the host, and the host Ping is not connected to the virtual machine
图片上色项目 —— Deoldify
Esp8266 at+cipstart= "", "", 8080 error closed ultimate solution
Neo4j installation tutorial
@controller,@service,@repository,@component区别
[free setup] asp Net online course selection system design and Implementation (source code +lunwen)
Navicat 導出錶生成PDM文件
项目实战-后台员工信息管理(增删改查登录与退出)
Timestamp with implicit default value is deprecated error in MySQL 5.6
FRP intranet penetration
Invalid global search in idea/pychar, etc. (win10)
Win10: how to modify the priority of dual network cards?
Csdn-nlp: difficulty level classification of blog posts based on skill tree and weak supervised learning (I)
Tcp/ip protocol (UDP)