一、PLSQL编程思维导图

二、PLSQL编程思维导图对应笔记

 PL/SQL编程    @Holly老师

 5.1 为什么学习PL/SQL编程?
5.1.1 当我们要批量插入100万数据,怎么办?
1、难道要写一百条insert into吗?不是,由于插入数据的操作是重复的,所以我们可以利用循环去实现,那怎么去实现呢?就用plsql编程去实现! 5.2 什么是PL/SQL编程
5.2.1 概念
pl/sql是块结构语言,它将一组语句放在一个块中。
PL/SQL程序结构是一种描述性很强、界限分明的块结构、嵌套块结构,被分成单独的过程、函数、触发器,且可以把它们组合为程序包,提高程序的模块化能力。 5.2.2 组成
1、声明部分
declare
2、执行部分
begin
3、异常处理部分
exception 5.2.3 PL/SQL块的结构
DECLARE
--声明部分: 在此声明PL/SQL用到的变量,类型及游标,以及局部的存储过程和函数
BEGIN
-- 执行部分: 过程及SQL 语句 , 即程序的主要部分
EXCEPTION
-- 执行异常部分: 错误处理
END;
其中:执行部分不能省略 5.2.4 PL/SQL块可以分类
1. 无名块或匿名块(anonymous):动态构造,只能执行一次,可调用其它程序,但不能被其它程序调用。
2. 命名块(named):是带有名称的匿名块,这个名称就是标签。
3. 子程序(subprogram):存储在数据库中的存储过程、函数等。当在数据库上建立好后可以在其它程序中调用它们。
4. 触发器 (Trigger):当数据库发生操作时,会触发一些事件,从而自动执行相应的程序。
5. 程序包(package):存储在数据库 中的一组子程序、变量定义。在包中的子程序可以被其它程序包或子程序调用。但如果声明的是局部子程序,则只能在定义该局部子程序的块中调用该局部子程序。 5.2.5 PL/SQL结构
1、 PL/SQL块中可以包含子块; 2、子块可以位于 PL/SQL中的任何部分; 3、子块也即PL/SQL中的一条命令; 5.2.6 运算符
关系运算符 一般运算符 逻辑运算符 5.2.7 数据类型
5.2.7.1 LOB数据类型
1、BFILE (Movie)
存放大的二进制数据对象,这些数据文件不放在数据库里,而是放在操作系统的某个目录里,数据库的表里只存放文件的目录。
2、 BLOB(Photo)
存储大的二进制数据类型。变量存储大的二进制对象的位置。大二进制对象的大小<=4GB。
3、 CLOB(Book)
存储大的字符数据类型。每个变量存储大字符对象的位置,该位置指到大字符数据块。大字符对象的大小<=4GB。
4、 NCLOB
存储大的NCHAR字符数据类型。每个变量存储大字符对象的位置,该位置指到大字符数据块。大字符对象的大小<=4GB。 5.2.7.2 属性类型
1、使用%TYPE
(1)概念:
定义一个变量,其数据类型与已经定义的某个数据变量(尤其是表的某一列)的数据类型相一致,这时可以使用%TYPE
(2)优点:
使用%TYPE特性的优点在于: 1. 所引用的数据库列的数据类型可以不必知道; 2. 所引用的数据库列的数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。
(3)示例1:
例7:
set serverout on
DECLARE
-- 用%TYPE 类型定义与表相配的字段
TYPE T_Record IS RECORD(
T_no emp.empno%TYPE,
T_name emp.ename%TYPE,
T_sal emp.sal%TYPE );
-- 声明接收数据的变量
v_emp T_Record;
BEGIN
SELECT empno, ename, sal INTO v_emp FROM emp WHERE empno=7788;
DBMS_OUTPUT.PUT_LINE
(TO_CHAR(v_emp.t_no)||' '||v_emp.t_name||' ' || TO_CHAR(v_emp.t_sal));
END; /
示例2:
例8:
set serverout on
DECLARE
v_empno emp.empno%TYPE :=&no;
Type t_record is record (
v_name emp.ename%TYPE,
v_sal emp.sal%TYPE,
v_date emp.hiredate%TYPE);
Rec t_record;
BEGIN
SELECT ename, sal, hiredate INTO Rec FROM emp WHERE empno=v_empno;
DBMS_OUTPUT.PUT_LINE(Rec.v_name||'---'||Rec.v_sal||'--'||Rec.v_date);
END;
/
2、使用%ROWTYPE
(1)概念
PL/SQL 提供%ROWTYPE操作符, 返回一个记录类型, 其数据类型和数据库表的数据结构相一致。
(2)优点
使用%ROWTYPE特性的优点在于: 1. 所引用的数据库中列的个数和数据类型可以不必知道; 2. 所引用的数据库中列的个数和数据类型可以实时改变,容易保持一致,也不用修改PL/SQL程序。
(3)示例
例9:
set serverout on
DECLARE
v_empno emp.empno%TYPE :=&no;
rec emp%ROWTYPE;
BEGIN
SELECT * INTO rec FROM emp WHERE empno=v_empno;
DBMS_OUTPUT.PUT_LINE('姓名:'||rec.ename||'工资:'||rec.sal||'工作时间:'||rec.hiredate);
END;
/ 5.2.7 变量
5.2.6.1 变量的定义
1、 定义变量
语法:变量名 数据类型[(大小)] [:=变量的初始值] ;
2、定义常量
语法:常量名 constant 数据类 := 常量值 ; 5.2.6.2 命名要求
PL/SQL程序设计中的标识符定义与SQL 的标识符定义的要求相同。要求和限制有: 1. 标识符名不能超过30字符; 2. 第一个字符必须为字母; 3. 不分大小写; 4. 不能用"-"(减号); 5. 不能是SQL保留字。 提示: 一般不要把变量名声明与表中字段名完全一样,如果这样可能得到不正确的结果. 5.2.6.3 命名规则
变量命名规则 5.2.7.1 变量类型
变量类型 5.2.6.3 案例1:
例如:下面的例子将会删除所有的纪录,而不是’EricHu’的记录; DECLARE
ename varchar2(20) :='EricHu';
BEGIN
DELETE FROM scott.emp WHERE ename=ename;
END; 5.2.8 变量增删改示例
1. 示例:插入
例1. 插入一条记录并显示;
set serverout on
DECLARE
Row_id ROWID;
info VARCHAR2(40);
BEGIN
INSERT INTO scott.dept VALUES (90, '财务室', '海口')
RETURNING rowid, dname||':'||to_char(deptno)||':'||loc
INTO row_id, info;
DBMS_OUTPUT.PUT_LINE('ROWID:'||row_id);
DBMS_OUTPUT.PUT_LINE(info);
END;
/
其中: RETURNING子句用于检索INSERT语句中所影响的数据行数,当INSERT语句使用VALUES 子句插入数据 时,RETURNING 字句还可将列表达式、ROWID和REF值返回到输出变量中。在使用RETURNING 子句是应注意以下 几点限制: 1.不能与DML语句和远程对象一起使用; 2.不能检索LONG 类型信息; 3.当通过视图向基表中插入数据时,只能与单基表视图一起使用。
2.示例:修改
例2. 修改一条记录并显示
set serverout on
DECLARE
Row_id ROWID;
info VARCHAR2(40);
BEGIN
UPDATE dept SET deptno=100 WHERE DNAME='财务室'
RETURNING rowid, dname||':'||to_char(deptno)||':'||loc
INTO row_id, info;
DBMS_OUTPUT.PUT_LINE('ROWID:'||row_id);
DBMS_OUTPUT.PUT_LINE(info);
END;
/
其中: RETURNING子句用于检索被修改行的信息。当UPDATE语句修改单行数据时,RETURNING 子句可以检索被修改行的 ROWID和REF值,以及行中被修改列的列表达式,并可将他们存储到PL/SQL变量或复合变量中;当UPDATE语句修改多行数据 时,RETURNING 子句可以将被修改行的ROWID和REF值,以及列表达式值返回到复合变量数组中。在UPDATE中使用 RETURNING 子句的限制与INSERT语句中对RETURNING子句的限制相同。
3.删除
例3. 删除一条记录并显示
set serverout on
DECLARE
Row_id ROWID;
info VARCHAR2(40);
BEGIN
DELETE dept WHERE DNAME='办公室'
RETURNING rowid, dname||':'||to_char(deptno)||':'||loc
INTO row_id, info;
DBMS_OUTPUT.PUT_LINE('ROWID:'||row_id);
DBMS_OUTPUT.PUT_LINE(info);
END;
/
其中: RETURNING子句用于检索被删除行的信息:当DELETE语句删除单行数据时,RETURNING 子句可以检索被删除行的 ROWID和REF值,以及被删除列的列表达式,并可将他们存储到PL/SQL变量或复合变量中;当DELETE语句删除多行数据 时,RETURNING 子句可以将被删除行的ROWID和REF值,以及列表达式值返回到复合变量数组中。在DELETE中使用 RETURNING 子句的限制与INSERT语句中对RETURNING子句的限制相同。 5.3 如何使PL/SQL编程
大家有没有发现我们每天sql语句后面都有什么呀?都有分号!如果在java中 5.4 在什么时候使用PL/SQL编程

PLSQL编程思维导图对应笔记

三、具体PLSQL编程案例(1)

 --0.创建表
create table(tid number,tname varchar2(20)); --1.定义变量,完成赋值并输出
set serverout on
declare
v_tid number;
v_tname varchar2(20);
begin
tid:=1;
tname:='holly';
dbms_output.put_line('老师编号:'||tid||';老师姓名:'||tname);
end;
/ --2.向数据库表中插入数据
set serverout on
begin
insert into teacher values(1,'holly');
commit;
end;
/ --3.从数据库表中查询两个值并赋值给变量输出
--(1)%type定义变量表示该变量的数据类型和表的数据类型一致
--(2)select 字段1,字段2 into 变量1,变量2 from 表名
--意思是将查询出来的字段1和字段2的值赋值给变量1和变量2 set serverout on
declare
v_tid teacher.tid%type;
v_tname teacher.tname%type;
begin
select tid,tname into v_tid,v_tname from teacher;
dbms_output.put_line('编号:'||v_tid||' 姓名:'||v_tname);
end;
/ --4.if判断结构 :如果name等于'holly'输出name的值
set serverout on
declare
v_name varchar2(20);
begin
v_name:='holly';
if v_name='holly' then
dbms_output.put_line('姓名:'||v_name);
end if;
end;
/ 输出内容:
姓名:holly --5.if-else判断结果
--注意:=&str 提示动态输入时,根据数据类型输入值,
--如果是varchar2类型需要输入时加单引号
declare
v_name varchar2(20):=&v_name;
begin
if v_name='holly' then
dbms_output.put_line('姓名:'||v_name);
else
dbms_output.put_line('who?');
end if;
end;
/
运行结果如下: 输入 v_name 的值: 'json'
原值 2: v_name varchar2(20):=&v_name;
新值 2: v_name varchar2(20):='json';
who? PL/SQL 过程已成功完成。 --6.多重if-else
--if then
--elsif then
--elsif then
--else
--end if; declare
v_name varchar2(20):=&v_name;
begin
if v_name='holly' then
dbms_output.put_line('姓名:'||'holly');
elsif v_name='json' then
dbms_output.put_line('姓名:'||'json');
elsif v_name='who' then
dbms_output.put_line('姓名:'||'who');
else
dbms_output.put_line('error');
end if;
end;
/ 运行结果如下:
输入 v_name 的值: 'json'
原值 2: v_name varchar2(20):=&v_name;
新值 2: v_name varchar2(20):='json';
姓名:json PL/SQL 过程已成功完成。 --7.嵌套if-else --8.switch选择结构
declare
v_name varchar2(20):=&v_name;
begin
case v_name
when 'a' then
dbms_output.put_line('a');
when 'b' then
dbms_output.put_line('b');
end case;
end;
/ 输入 v_name 的值: 'a'
原值 2: v_name varchar2(20):=&v_name;
新值 2: v_name varchar2(20):='a';
a PL/SQL 过程已成功完成。

具体PLSQL编程案例(1)

四、具体PLSQL编程案例(2)

 --.批量添加数据
--生成随即字符dbms_random.string(选项,长度);
--选项:u表示大写字母,L表示小写字母,x表示数字和字母混合,p表示任意字符
--随机生成数字:语法1:dbms_random.value; 生成0-1之间随机数
--dbms_random.value*num; 生成0到num之间的随机数
--dbms_random.value(min,max);生成min到max之间的随机数
--随机数取整:round(dbms_random.value(min,max)); 生成min到max之间的随机整数
--随机数取整:trunc(dbms_random.value(min,max)); 生成min到max之间的随机整数 --1.创建用户
create user holly identified by sys; --2.赋权
grant dba to holly; --3.切换用户登录
conn holly/sys --4.创建表
create table(tid number,tname varchar2(20)); --5.编写第一个pl/sql块
--注意dos中必须有
--(1)set serverout on 开始
--(2)/结束 set serverout on
declare
v_name varchar2(20);
begin
v_name:='holly';
dbms_output.put_line('姓名'||v_name);
end;
/ --6.向teacher表插入数据
set serverout on
begin
insert into teacher values(1,'holly');
commit;
end;
/ --7.将表数据查询出来赋值给变量并打印
set serverout on
declare
v_tid teacher.tid%type;
v_tname teacher.tname%type;
begin
select tid,tname into v_tid,v_tname
from teacher;
dbms_output.put_line('tid:'||v_tid||'tname:'||v_tname);
end;
/ tid:1 tname: holly --8.动态输入并输出
set serverout on
declare
v_num number:=&num;
v_nam varchar2(20):=&str;
begin
dbms_output.put_line(v_num);
dbms_output.put_line(v_nam);
end;
/ 输入 num 的值: 1
原值 2: v_num number:=&num;
新值 2: v_num number:=1;
输入 str 的值: 'holly'
原值 3: v_nam varchar2(20):=&str;
新值 3: v_nam varchar2(20):='holly';
1
holly --9.if 结构
set serverout on
declare
v_str varchar2(20);
begin
v_str:='holly';
if v_str='holly' then
dbms_output.put_line(v_str);
end if;
end;
/ --10.if-else
set serverout on
declare
v_str number:=&num;
begin
if v_str=1 then
dbms_output.put_line('zhudaiyu');
else
dbms_output.put_line('zhuweilun');
end if;
end;
/
输入 num 的值: 1
原值 2: v_str number:=&num;
新值 2: v_str number:=1;
zhudaiyu --11.多重if-else
set serverout on
declare
v_num number:=&num;
begin
if v_num=1 then
dbms_output.put_line(v_num);
elsif v_num=2 then
dbms_output.put_line(v_num);
elsif v_num=3 then
dbms_output.put_line(v_num);
else
dbms_output.put_line('others?');
end if;
end;
/ --12.多重if-else嵌套(自由发挥) --13.switch ,变量是数值
set serverout on
declare
v_num number:=&num;
begin
case v_num
when 1 then
dbms_output.put_line('您输入的是:'||v_num);
when 2 then
dbms_output.put_line('您输入的是:'||v_num);
when 3 then
dbms_output.put_line('您输入的是:'||v_num);
else
dbms_output.put_line('nani');
end case;
end;
/ --14.switch ,变量是varchar2
set serverout on
declare
v_str varchar2(20):=&str;
begin
case v_str
when 'holly1' then
dbms_output.put_line('您输入的是:'||v_str);
when 'holly2' then
dbms_output.put_line('您输入的是:'||v_str);
when 'holly3' then
dbms_output.put_line('您输入的是:'||v_str);
else
dbms_output.put_line('nani');
end case;
end;
/ --14.for,循环输出十次
set serverout on
begin
for i in 1..10 loop
dbms_output.put_line('第'||i||'次输出');
end loop;
end;
/ --15.do-while循环
set serverout on
declare
v_num number:=&num;
begin
loop
v_num:=v_num+1;
dbms_output.put_line('第'||v_num||'次输出');
exit when v_num=10;
end loop;
end;
/ --16.while循环
set serverout on
declare
v_num number:=&num;
begin
while v_num<10 loop
dbms_output.put_line('第'||v_num||'次输出');
v_num:=v_num+1;
end loop;
end;
/ --17.添加列
alter table teacher add(phone varchar2(20)); --18.循环插入30条数据,保证tid唯一,并且每次递增1,
-- 手机号码130开头的11位到189开头的11位号码
--姓名:数字和字母组成
set serverout on
declare
--定义变量并和数据库数据类型保持一致
v_tname teacher.tname%type;
v_phone teacher.phone%type;
begin
--for循环 从2到30
for i in 2..30 loop
--随机生成字符串
v_tname:=dbms_random.string('x',5);
--随机生成某范围内的整数
v_phone:=trunc(dbms_random.value(13000000000,18999999999));
insert into teacher values(i,v_tname,v_phone);
commit;
end loop;
dbms_output.put_line('insert ok');
end;
/

具体PLSQL编程案例(2)

五、批量插入数据案例

 --1.数据库表
--1.1 用户表:用户编号,姓名,密码,电话,是否是管理员
create table userinfo(id number(4),name varchar2(50),password varchar2(20),telephone varchar2(15),isadmin varchar2(5)); --1.2 房屋类型表:房屋类型编号,房屋类型名称
create table house_type(id number,name varchar2(50)); --1.3 区域表:区域编号,区域名称
create table district (id number,name varchar2(50)); --1.4街道表:街道编号,街道名称,区域编号
create table street(id number,name varchar2(50),district_id number); --1.5房屋表:房屋编号,房屋标题,房屋描述信息,价格,发布时间,面积,联系人,用户编号,房屋类型 编号,街道编号,房屋图片地址,联系人图片地址
create table house(id number,title varchar2(50),description varchar2(2000),
price number(6),pubdate date,floorage number(4),contact varchar2(100),user_id number,
housetype_id number,street_id number,houseurl varchar2(50),personurl varchar2(50)); --2.添加主键
--2.1 用户表主键
alter table userinfo add constraint pk_userinfo_id primary key(id); --2.2 房屋类型表主键
alter table house_type add constraint pk_housetype_id primary key(id); --2.3 区域表主键
alter table district add constraint pk_district_id primary key(id); --2.4 街道表主键
alter table street add constraint pk_street_id primary key(id); --2.5 房屋信息表主键
alter table house add constraint pk_house_id primary key(id); --3.添加外键
--3.1房屋表和用户表关联
alter table house add constraint fk_house_userid foreign key(user_id) references userinfo (id); --3.2房屋表和房屋类型表关联
alter table house add constraint fk_house_housetypeid foreign key(housetype_id) references house_type(id); --3.3房屋表和街道表关联
alter table house add constraint fk_house_streetid foreign key(street_id) references street(id); --3.4 区县和街道的外键关联
alter table street add constraint fk_street_districtid foreign key(district_id)
references district(id); --4.创建序列
--4.1 街道序列
create sequence seq_street; --4.2 用户表序列
create sequence seq_userinfo; --4.3 房屋类型序列
create sequence seq_housetype; --4.4 区域序列
create sequence seq_district; --4.5 房屋序列
create sequence seq_house; --5.插入数据
--生成随即字符dbms_random.string(选项,长度);
--选项:u表示大写字母,L表示小写字母,x表示数字和字母混合,p表示任意字符
--随机生成数字:语法1:dbms_random.value; 生成0-1之间随机数
--dbms_random.value*num; 生成0到num之间的随机数
--dmbs_random.value(min,max);生成min到max之间的随机数
--随机数取整:round(dmbs_random.value(min,max)); 生成min到max之间的随机整数
--随机数取整:trunc(dmbs_random.value(min,max)); 生成min到max之间的随机整数 --5.1 为用户表插入10条数据
set serverout on
begin
for i in 1 .. 10 loop
insert into userinfo values(seq_userinfo.nextval,dbms_random.string ('u',5),dbms_random.string('x',6),
round(dbms_random.value(13000000000,18900000000)),'否');
end loop;
commit;
end;
/ --查询插入的数据
select count(1) from userinfo; --5.2 为房屋类型表添加数据
set serverout on
begin
for i in 1..7 loop
for j in 1..7 loop
insert into house_type values(seq_housetype.nextval,i||'室'||j||'厅');
end loop;
end loop;
end;
/ --5.3 为区域表插入数据
insert into district values(seq_district.nextval,'江宁区');
insert into district values(seq_district.nextval,'鼓楼区');
insert into district values(seq_district.nextval,'六合区');
insert into district values(seq_district.nextval,'大厂区');
insert into district values(seq_district.nextval,'玄武区');
insert into district values(seq_district.nextval,'栖霞区');
insert into district values(seq_district.nextval,'白下区');
insert into district values(seq_district.nextval,'建邺区');
insert into district values(seq_district.nextval,'浦口区');
insert into district values(seq_district.nextval,'下关区');
commit; 或者 set serverout on
begin
for i in 1..10 loop
insert into district values(seq_district.nextval,dbms_random.string('u',5)||'区');
end loop;
commit;
end;
/
--查询插入的数据
select * from tbl_district; --5.4 为街道插入数据
set serverout on
declare
v_id district.id%type;
v_name district.name%type;
v_discount number;
begin
--通过select into将表字段查询出来赋值给变量
select count(1) into v_discount from district;
for i in 1..v_discount loop
for j in 1..10 loop
select id,name into v_id,v_name from district where id=i;
insert into street values(seq_street.nextval,substr(v_name,1,2)|| dbms_random.string('x',10)||'街道',v_id);
end loop;
end loop;
end;
/ --查询插入的数据
select count(1) from street ; --5.5 为房屋信息插入数据
set serverout on
declare
--定义用户表id的最小值和最大值
v_min_userinfoid userinfo.id%type;
v_max_userinfoid userinfo.id%type;
--定义房屋户型id的最小值和最大值
v_min_housetypeid house_type.id%type;
v_max_housetypeid house_type.id%type;
--定义街道id的最小值和最大值
v_min_streetid street.id%type;
v_max_streetid street.id%type;
begin
--将所有的表的id的最大值和最小值求出来分别赋值给变量
select min(id),max(id) into v_min_userinfoid,v_max_userinfoid from userinfo;
select min(id),max(id) into v_min_housetypeid,v_max_housetypeid from house_type;
select min(id),max(id) into v_min_streetid,v_max_streetid from street; --打印
-- dbms_output.put_line(v_min_userinfoid);
--dbms_output.put_line(v_max_userinfoid);
--dbms_output.put_line(v_min_housetypeid);
--dbms_output.put_line(v_max_housetypeid);
-- dbms_output.put_line(v_min_streetid);
-- dbms_output.put_line(v_max_streetid); --循环插入50万条数据
for i in 1..500000 loop
insert into house
values(seq_house.nextval,dbms_random.string('u',5),dbms_random.string('x',15),
trunc(dbms_random.value(1000,900000)),to_date('2015-12-06','yyyy-mm-dd'),
trunc(dbms_random.value(30,1000)),dbms_random.string('u',6),
trunc(dbms_random.value(v_min_userinfoid,v_max_userinfoid)),
trunc(dbms_random.value(v_min_housetypeid,v_max_housetypeid)),
trunc(dbms_random.value(v_min_streetid,v_max_streetid)),
i||'.jpg',i||'.jpg');
end loop;
commit;
end;
/

批量插入数据案例

6、plsql编程的更多相关文章

  1. Oracle总结之plsql编程(基础七)

    紧接基础六,对oracle角色和权限的管理之后,在接下来的几次总结中来就最近工作中用过的plsql编程方面的知识进行总结,和大家分享! 原创作品,转自请注明出处:https://www.cnblogs ...

  2. Oracle数据库DDL,DML,视图,PLSQL编程

    动手敲~~~ --创建一个表空间--beijing create tablespace beijing datafile 'c:\beijing.dbf' size 100m autoextend o ...

  3. Oracle数据库PLSQL编程和存储过程

    一.PLSQL编程 1.1.使用PLSQL实现 Hello world! 1 -- Created on 2022/8/22 by ADMINISTRATOR 2 declare 3 -- 这是申明变 ...

  4. Oracle基础 PL-SQL编程基础(4) 异常处理

    异常处理: 即使良好的PL-SQL程序也会遇到错误或者未预料的事件,一个优秀的程序都应该能够处理各种出错情况,尽可能的从错误中恢复.程序在运行时出现的错误成为异常.发生异常后,语句讲终止执行,PLSQ ...

  5. Oracle基础 PL-SQL编程基础(1) 变量和常量

    一.什么是PL-SQL PL-SQL是结合了Oracle过程语言和结构化查询语言(SQL)的一种扩展语言.具体来说,PL-SQL就是在普通的SQL语句的基础上增加了编程语言的特点,将数据操作和查询语句 ...

  6. Oracle总结之plsql编程(基础九)

    原创作品,转自请注明出处:https://www.cnblogs.com/sunshine5683/p/10344302.html 接着上次总结,继续今天的总结,今天主要总结plsql中控制语句,如条 ...

  7. Oracle总结之plsql编程(基础八)

    原创作品,转自请注明出处:https://www.cnblogs.com/sunshine5683/p/10328524.html 一.函数 1.函数是可以返回一个特定的数据,函数的创建中必须包含re ...

  8. Oracle数据库基本操作(四) —— PLSQL编程

    Procedure Language 实际上是Oracle对SQL语言的能力扩展,让SQL语言拥有了if条件判断,for循环等处理. 一.PLSQL基本语法 DECLARE -- 声明部分 变量名 变 ...

  9. plsql编程

    ORACLE PL/SQL编程详解 SQL语言只是访问.操作数据库的语言,并不是一种具有流程控制的程序设计语言,而只有程序设计语言才能用于应用软件的开发.PL /SQL是一种高级数据库程序设计语言,该 ...

随机推荐

  1. 通过file文件选择图片预览功能

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  2. C# 匿名方法和拉姆达表达式

    有时候,我们需要封装一组数据,只有数据,没有方法,并且只用于当前程序,不需要在项目间重用,这时候,如果是传统的使用类来封装的话,大概会是下面这种样子: internal class SomeData ...

  3. 啥数据类型set补充、深浅拷贝与函数

    #s1 = {1,2,3,1} """ s2 = ([2,5,6]) print(s1) s1.add(5) #添加元素"5" print(s1) s ...

  4. SAP HANA中创建分析权限(Analytic Privilege)

    Demo Instruction: 假定CustomerID > 100的为VIP客户,我们的权限设置为只显示VIP客户 所使用的Attribute View: ATTR_CUSTOMER_FU ...

  5. SAP HANA 中的决策表(Decision Table)

    http://scn.sap.com/community/developer-center/hana/blog/2013/01/11/what-can-you-do-with-decision-tab ...

  6. ios UIImageView异步加载网络图片

    方法1:在UI线程中同步加载网络图片 UIImageView *headview = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 40, 4 ...

  7. 变形属性 transform

    transform功能可以实现文字或图像的旋转.绽放.倾斜.与移动: 注意点:1.其移动.旋转.倾斜.与绽放这4种效果的使用先后顺序不同,页面会显示不同的结果: 2.属性值有一个参数与有多个参数的别: ...

  8. 各种文件的ContentType

    CONTENT_TYPE = { 16 '.load': 'text/html', 17 '.123': 'application/vnd.lotus-1-2-3', 18 '.3ds': 'imag ...

  9. Python基础知识学习_Day3

    一.字典用法 字典是一种key-value数据类型,通过key获取具体value的内容,字典的特性是无序.去重. 增删改查用法如下: 1.1基本增删改查操作 name = {"," ...

  10. struts2查询的数据的存放

    当我们查询数据的时候,把它存放到一个位置.以供页面显示. 1:使用***Map取代内置对象存放 public String query(){ ActionContext.getContext().pu ...