当前位置: 首页 > news >正文

群晖wordpress主机兰州seo新站优化招商

群晖wordpress主机,兰州seo新站优化招商,客户引流推广方案,网络架构指什么1、plsql的概念PL/SQL(Procedural Language/SQL)是一种过程化语言,属于第三代语言,它与C、C、Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语…

1、plsql的概念

PL/SQL(Procedural Language/SQL)是一种过程化语言,属于第三代语言,它与C、C++、Java等语言一样关注于处理细节,可以用来实现比较复杂的业务逻辑。它允许SQL的数据操纵语言和查询语句包含在块结构(block_structured)和代码过程语言中,使PL/SQL成为一个功能强大的事务处理语言。

2、plsql的分类

  • 无名块或匿名块(anonymous):动态构造,只能执行一次,可调用其它程序,但不能被其它程序调用。
  • 命名块(named):是带有名称的匿名块,这个名称就是标签。
  • 子程序(subprogram):存储在数据库中的存储过程、函数等。当在数据库上建立好后可在其它程序中调用它们。

存储过程

存储过程(Stored Procedure)是在大型数据库系统中, 一组为了完成特定功能的SQL 语句集,存储在数据库中, 经过第一次编译后再次调用不需要再次编译,用户通过 指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。

触发器

  •  触发器 (Trigger):当数据库发生操作时,会触发一 些事件,从而自动执行相应的程序。

程序包

  • 程序包(package):存储在数据库中的一组子程序、 变量定义。在包中的子程序可以被其它程序包或子程序调用。

3、plsql的规范

标识符

  • 标识符名不能超过30字符;
  • 一个字符必须为字母;
  • 不区分大小写;
  • 不能用’-‘(减号);
  • 不能是SQL保留字。

4、plsql的操作

4.1 块操作

格式:

DECLARE           ---用来定义变量
V_ename varchar2(20) := 'SMITH';
BEGIN             ----用于执行sql语句
update my_emp set sal =1000 where ename = V_ename;
delete from my_emp where job= 'PRESIDENT' ;
COMMIT;
END;           ----结束PL/SQL块
/                     -------/执行PL/SQL块

例子:有两张表(课程和选课记录表),要求删除课程和对应课程记录

级联删除课程,要求删除课程后,将本门课程的选课记录也要
删除,并在控制台输出通知。
declare 
v_cid_old NUMBER(10):=101;
begin
delete from cselect where cid=v_cid_old;
update course set cid_flag=0 where cid=v_cid_old;
delete from course where cid=v_cid_old;
commit;
DBMS_OUTPUT.PUT_LINE('已成功'||v_cid_old||'课程删除');
end;
/

4.2 存储过程

(注:在这个基础上是触发器,函数,程序包)

格式:

create or replace procedure 过程名

(过程参数1 类型(长度) .........过程参数n)

 is

变量定义

 begin sql语句

 end;/

调用:

  • exec add_my_dept(14, 'NNN' , 'NNN')
  • call add_my_dept(17, 'NNN2' , 'NNN2')
例子:有两张表(课程和选课记录表),要求删除课程和对应课程记录
存储,级联删除课程,要求删除课程后,将本门课程的选课记录也要
删除,并在控制台输出通知。create or replace procedure
pro_cs(cid_old number)
is
begin
delete from cselect where cid=cid_old;
update course set cid_flag=0 where cid=cid_old;
delete from course where cid=cid_old;
commit;
DBMS_OUTPUT.PUT_LINE('已成功'||cid_old||'课程删除');
end;
/

4.3 函数

格式:

create or replace function 函数名

(过程参数1 类型(长度) .........过程参数n)

 is

变量定义

 begin sql语句

 end;/

调用:

函数名(表字段名)

例子:有一张emp员工表,输出ename字段的数据,并将每一行输出的结果才str*str格式

--自定义函数(输出名字的时候,中间用星号表示)create or replace function strx(str in varchar2)
return varchar2
is
ret varchar2(20);
beginret:=SUBSTR(str,1, 1) || RPAD('*', LENGTH(str)-2, '*') || substr(str,-1,1);dbms_output.put_line(ret);
return ret;
end;
/
--调用
select strx(ename) from emp;

4.4 调度器

格式:

--创建触发器
CREATE OR REPLACE TRIGGER backup_dept
before delete---指定执行的时机(指定在删除操作前)
 on scott.my_dept ----指定触发器的目标表
for each row ----执行操作的粒度
WHEN (old.deptno = 40)----触发条件
BEGIN----触发器的正文
-----一旦执行my_dept表的删除操作,就将删除前的值做个备份
insert into dept_backups
values(:old.deptno,:old.dname,:old.loc,sysdate);
END;
/
分类:


dml触发器例子:emp表删除的数据,保存在backup_emp中

create table backup_emp as select * from emp  where 1=2;
删除的数据,保存在backup_emp中
create or replace trigger backup_emp
before delete
on O3.emp
for each row
begininsert into backup_emp(deptno,ename,job,mgr,HIREDATE)values(:old.deptno,:old.ENAME,:old.job,:old.mgr,sysdate); 
end;
/ 

系统触发器 例子:登入数据库的用户信息

--系统触发器
创建备份表
create table log_event
(username varchar2(10),address varchar2(20),logon_date timestamp,logoff_date timestamp
);创建登入触发器
create or replace trigger tr_logon
after logon on database
begininsert into log_event(username,address,logon_date)values (ora_login_user,ora_client_ip_address,systimestamp);
end;
/

视图触发器  例子:创建一张emp员工表和dept部门表的视图,创建一个视图触发器可以实现修改复杂视图

一般是使用在多表的复杂视图,修改表数据创建一个多表视图

--视图触发器create view view_emp_dept as(
select d.deptno,d.dname,e.empno,e.ename  
from dept d,emp e 
where d.deptno=e.deptno
);创建视图触发器
create or replace trigger tr_view
instead of insert on view_emp_dept
for each row
begininsert into emp(empno,ename,deptno) values(:new.empno,:new.ename,:new.deptno);
end;
/

4.5 程序包

用来存放同类型并管理procedure,function,变量的定义等, 相当于java的包。
用法:
1. 创建包规范
sql
CREATE OR REPLACE PACKAGE package_name
AS-- 公共变量、常量声明-- 存储过程声明PROCEDURE procedure_name(parameters);-- 函数声明FUNCTION function_name(parameters) RETURN datatype;
END package_name;
2. 创建包体
sql
CREATE OR REPLACE PACKAGE BODY package_name
AS-- 私有变量、常量声明-- 存储过程实现PROCEDURE procedure_name(parameters) ISBEGIN-- 实现代码END procedure_name;-- 函数实现FUNCTION function_name(parameters) RETURN datatype ISBEGIN-- 实现代码END function_name;END package_name;
例子:使用Oracle程序包封装部门表的增删操作
 
1. 建包引用
create or replace package my_package
as
procedure add_my_dept2(V_deptno
number,V_dname varchar2,V_loc varchar2);
procedure del_my_dept3(V_deptno number);
end;2. 建包体
create or replace package body my_package
as
procedure add_my_dept2(V_deptno number,V_dname varchar2,V_loc varchar2)
is
begin
insert into my_dept values(V_deptno,V_dname,V_loc);
commit;
end add_my_dept2;---结束add_my_dept2procedure del_my_dept3(V_deptno number)
is
begin
delete from my_dept where deptno= V_deptno;
commit;
end del_my_dept3;---结束del_my_dept3
end;
/

http://www.dtcms.com/a/470866.html

相关文章:

  • Go语言实现HTML转PDF
  • 深入解析Java NIO:从BIO到Reactor模式的网络编程演进
  • 公司怎么做网站推广北京西站停车场收费标准
  • 企业网站系统手机版住房与城乡建设部建设环境工程技术中心网站
  • 非法期货做网站安康信息平台
  • MySQL安装包下载成功,如何跨版本备份迁移无忧?
  • ASM架构基础与核心概念
  • 每天五分钟深度学习:正则化技术解决过拟合(高方差)问题
  • 局域网建设个人网站美食网站设计论文
  • 使用 systemd 管理 MySQL 服务
  • 做网站客户最关心哪些问题下载百度电商平台app
  • 消防电器具工程量-图形识别快速计算
  • 印度股票市场数据接口,支持实时行情、IPO新股、公司信息、技术分析等多种功能
  • 顺德 网站开发 招聘工程平台网
  • 网站建设开发网站案例项目费用插画原画十大培训机构
  • 排查素材下载过慢或失败问题
  • 小网站托管费用大连网站建设 仟亿
  • 基于单片机的窗帘、灯光、空调智能家居控制系统设计
  • Docker存储体系深度解析
  • 如何基于OneAPI构建langchain RAG系统
  • 网站建设说明书模板wordpress菜单结构
  • 如何应对紧急投标?AI工具1小时完成400页标书
  • 百度网盘PC电脑端提速方法
  • 【触想智能】什么是工业平板电脑以及工业平板电脑对制造业具有什么意义
  • 郑州 网站建设p9制作公司
  • 深度解析 “应用程序无法正常启动 0xc000007b”:原因、解决方案与预防措施
  • 南宁智慧园区网站建设wordpress如何更改页面链接
  • PowerBI实战-跨页面钻取drill through
  • 怎样做网站标题优化百度网站开发
  • 前后端解耦架构的演进:从REST到GraphQL与gRPC的范式迁移