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

推荐佛山企业网站建设株洲制作网站

推荐佛山企业网站建设,株洲制作网站,河南智慧团建官网,网站效果展示一、Oracle数据类型 Orcle数据类型说明类比MySQL数据类型字符型CHAR固定长度的字符类型CHAR字符型VARCHAR2可变长度的字符类型VARCHAR字符型LONG大文本类型#xff0c;最大2G数值型NUMBER数值类型#xff0c;整数小数都可以#xff0c;number(5)表示长度5的整数#xff0c…一、Oracle数据类型 Orcle数据类型说明类比MySQL数据类型字符型CHAR固定长度的字符类型CHAR字符型VARCHAR2可变长度的字符类型VARCHAR字符型LONG大文本类型最大2G数值型NUMBER数值类型整数小数都可以number(5)表示长度5的整数number(5,2)表示共5位含2位小数INT存整数FLOAT、DOUBLE存小数日期型DATE日期时间型精确到秒日期型TIMESTAMP精确到秒的小数点后9位二进制型CLOB存储字符最大4G比LONG更多LONGTEXT二进制型BLOB存储图像、声音、视频等数据最大 4GLONGBLOB 二、PL/SQL PL/SQLProcedure Language/SQL是Oracle对SQL语言的过程化扩展指在SQL命令语言中增加了过程处理语句分支、循环等。 基本语法结构 [declare-- 声明变量 ] begin--代码逻辑 [exception--异常处理 ] end;2.1 变量 变量声明语法 变量名 类型(长度) 变量赋值语法 变量名:变量值 select into赋值语法结果必须是一条记录多条记录和没有记录都会报错 select 列名 into 变量名 from 表名 where 条件 2.2 属性类型 引用型语法某个变量的类型不预先指定而是与查询结果相同 表名.列名%type 举例 declare v_price number(10,2);v_usenum2 number(10,2);v_usenum t_account.usenum%type;--变量的类型与t_account.num0相同v_num0 t_account.num1%type; beginv_price:2.45;select usenum,num0 into v_usenum,v_num0 from t_account -- 把usenum赋给v_usenum,num0赋给v_num0where year2012 and month01 and owneruuid1;v_usenum2:round(v_usenum/1000,2); end;记录型语法某个变量表示一行 表名%rowtype 举例 declare v_price number(10,2);v_usenum2 number(10,2);v_account t_account%rowtype;--表示一行记录 beginv_price:2.45;select * into v_account from t_account where year2012 and month01 and owneruuid1;--把查出来的一行给v_accountv_usenum2:round(v_account.usenum/1000,2);--v_account是一行记录用.列名使用对应列的值 end;2.3 异常 oracle中有如下两个异常 NO_DATA_FOUND执行select into未返回行 TOO_MANY_ROWS执行select into结果集超过一行 举例 declare v_price number(10,2);v_usenum2 number(10,2);v_account t_account%rowtype;--表示一行记录 beginv_price:2.45;select * into v_account from t_account where year2012 and month01 and owneruuid1;--把查出来的一行给v_accountv_usenum2:round(v_account.usenum/1000,2);--v_account是一行记录用.列名使用对应列的值 exceptionwhen NO_DATA_FOUND then DBMS_OUTPUT.putline(select into 未返回数据); -- 这句话是打印输出类似python中print()when TOO_MANY_ROWS thenDBMS_OUTPUT.putline(select into 返回多行数据); end;2.4 条件判断 基本语法1 if 条件 then 业务逻辑 end if; 基本语法2 if 条件 then 业务逻辑 else 业务逻辑 end if; 基本语法3 if 条件 then 业务逻辑 elsif 条件 then 业务逻辑 else 业务逻辑 end if; 2.5 循环 无条件循环语法重点 loop 循环语句 end loop; 举例 declarev_num number; beginv_num:1;loopv_num:v_num1;exit when v_num100;--loop循环中使用exit退出循环--也可以写成if v_num100 then exit;end if;end loop; end;有条件循环语法 while 条件 loop 循环语句 end loop; 举例 declarev_num number; beginv_num:1;while v_num100loopv_num:v_num1;end loop; end;for循环语法重点 for 变量 in 起始值..终止值 loop 循环语句 end loop; 举例 beginfor v_num in 1..100 --for循环v_num自动声明不用声明是局部变量只能在loop和end loop中间使用loopDBMS_OUTPUT.putline(v_num);end loop; end;2.6 游标 游标存放SQL语句的执行结果可以理解成结果集可以对其进行逐行处理。 声明游标语法 cursor 游标名称 is SQL语句; 使用游标语法 open 游标名称 loopfetch 游标名称 into 变量exit when 游标名称%notfound end loop; close 游标名称普通游标使用举例 declarecursor cur_pricetable is select * from t_pricetable where owertypeid 100;--声明游标v_pricetable t_pricetable%rowtype; beginopen cur_pricetable;--打开游标loopfetch cur_pricetable into v_pricetable;--提取游标exit when cur_pricetable%notfound;--退出循环游标DBMS_OUTPUT.putline(v_pricetable.price);--打印每一条记录的priceend loop;close cur_pricetable;--关闭游标 end;带参数游标使用举例 declarecursor cur_pricetable(v_ownertype number) is select * from t_pricetable where owertypeid v_ownertype;--声明带参数的游标v_pricetable t_pricetable%rowtype; beginopen cur_pricetable(100);--打开游标传入参数100loopfetch cur_pricetable into v_pricetable;--提取游标exit when cur_pricetable%notfound;--退出循环游标DBMS_OUTPUT.putline(v_pricetable.price);--打印每一条记录的priceend loop;close cur_pricetable;--关闭游标 end;for循环使用游标举例 自动打开、关闭游标不用声明变量也不用fetch可以直接使用 declarecursor cur_pricetable(v_ownertype number) is select * from t_pricetable where owertypeid v_ownertype;--声明带参数的游标 beginfor v_pricetable in cur_pricetable(100) --for循环使用游标变量不需要声明loopDBMS_OUTPUT.putline(v_pricetable.price);--打印每一条记录的priceend loop; end;三、存储函数 存储函数也称为自定义函数接受一个或多个参数返回一个结果。 函数中使用PL/SQL进行逻辑处理 存储函数创建语法 语法is的后面与PL/SQL语法的declare后面是一样的 create [or replace] function 函数名称 (参数名称 参数类型,参数名称 参数类型, ...) -- 这里只写参数类型不写长度 return 结果变量数据类型 -- 指定返回值的参数类型不写长度 is -- 声明变量 begin-- 代码逻辑return 结果变量; [exception-- 异常处理 ] end;举例 create or replace function fn_getaddress (v_id number) -- 函数的参数是number类型 return varchar2 -- 函数的返回值是varchar2类型 is v_name varchar2(30); begin--根据传入的v_id查询name并返回nameselect name into v_name from t_address where idv_id;return v_name; end;-- 调用函数查询id3的地址 select fn_getaddress(3) from dual; -- 调用函数查询addressid对应的地址不用再进行表关联 select id,name,fn_getaddress(addressid) from t_owners;四、存储过程 存储函数和存储过程的区别 存储函数只能返回一个值存储过程可以传出多个值返回多个值存储函数可以直接在select语句中使用而存储过程不能存储函数一般封装一个查询结果存储过程一般封装一段事务代码 存储过程创建语法 相比存储函数把function换成了procedure且没有了返回值 create [or replace] procedure 存储过程名称 (参数名称 参数类型,参数名称 参数类型, ...) -- 这里只写参数类型不写长度参数可以传入也可以传出 is-- 声明变量 begin-- 代码逻辑 [exception-- 异常处理 ] end;过程参数的三种模式 IN 传入参数默认 OUT 传出参数主要用于返回程序运行结果 IN OUT 传入传出参数 不带传出参数的存储过程举例 create or replace procedure pro_students_add ( v_id number, v_name varchar2 ) is begin insert into t_students values(v_id,v_name);commit; end;-- 调用存储过程 call pro_students_add(10,啦啦啦);带传出参数的存储过程举例 create or replace procedure pro_students_add ( v_id number, v_name varchar2, v_stuid out number --声明一个传出参数 ) is begin insert into t_students values(v_id,v_name);commit;-- 对传出参数赋值select id into v_stuid from t_students where id v_id; end;-- 调用传出参数的存储过程 declarev_stuid number; -- 声明一个变量用来接收存储过程的传出参数 beginpro_students_add(10,啦啦啦,v_stuid); -- 执行完该语句后v_stuid就有值了后面可以直接用DBMS_OUTPUT.putline(v_stuid); end;五、触发器 触发器是基于某一张表的增删改操作的在对应的增删改操作执行之前/之后执行一段PL/SQL代码 触发器分类 前置触发器在对应语句之前执行 后置触发器在对应语句之后执行 行级触发器每操作一条记录就执行一次触发器一般都是行级触发器 语句级触发器不管操作多少条记录一个SQL语句只对应执行一次触发器 创建触发器语法 create [or replace] trigger 触发器名before|after[delete][[or] insert][[or] update [of 列名]]on 表名[for each row][when(条件)] -- for each row表名该触发器是行级触发器 declare beginPL/SQL块 end;触发器中:old和:new所代表的值 触发语句:old:newInsert所有字段都是空(null)将要插入的数据update更新前该行的值更新后该行的值delete删除以前该行的值所有字段都是空(null) 后置触发器举例 -- 创建日志表记录业务名称修改前和修改后的值 create table t_owners_log( updatetime date, ownerid number, oldname varchar2(30), newname varchar2(30) );create or replace trigger tri_owners_log after update of name on t_owners -- 当t_owners.name被update之后触发该触发器 for each row -- 行级触发器 declarebegininsert into t_owners_log values(sysdate,:new.id,:old.name,:new.name);\-- 注意触发器里不用commit会自动commit如果是存储过程则需要commit end;六、视图、物化视图、序列、同义词 视图 一段查询的SQL语句创建成一张视图可以把这个视图当表来用视图不存储数据修改视图的内容会修改视图对应的基表 物化视图 一段查询的SQL语句创建成一张物化视图会存储数据修改物化视图不影响基表 序列 Oracle中没有自增主键所以要用序列实现获取一个自增/自减的数据序列.nextval获取下一个值序列.currval返回序列的当前值 同义词 可以理解为别名公有同义词所有用户都能使用私有同义词只能这个用户使用 Oracle结构 一个Oracle只有一个数据库一个数据库下有多个表空间 一个表空间下有多个用户每个用户创建的表都自动在对应的表空间下
http://www.pierceye.com/news/328017/

相关文章:

  • 邢台制作网站网上申报流程
  • 做网站的困难做的网站有营销效果吗
  • 高端集团网站建设公司做网站开发的有外快嘛
  • 网站服务器防火墙设置惠州网络推广公司哪家好
  • 做网站根据内容生成pdfwordpress自媒体二号
  • 临沂网站开发不会写代码怎么做网站
  • 怎么做加密货币网站wordpress 多域名登陆
  • 做网站的过程做网站公司广州
  • 女人动漫做受网站wordpress如何作页面
  • 做网站导航栏素材图建筑设计网站制作
  • 淘宝的网站建设方案国家为何要求所有网站均须备案
  • 企业网站模板下载哪家公司强温州建设公司网站
  • 网站编辑能在家做wordpress 做的商城
  • 空间信息网站开发公司工程项目质量安全管理体系
  • 网站流量被黑包装回收网站建设
  • 网站拒绝被百度收录成品网站1688特色
  • 深圳住房和建设局网站官网打不开WordPress 斗鱼
  • 纯文本网站连接西宁圆井模板我自己做的网站
  • 职业院校专题建设网站wordpress文章版权投诉
  • 网站改版好吗如何解决旅游网站建设问题
  • 爱站网使用的是什么网站模仿网站页面违法吗
  • 做民宿的网站wordpress 短信平台
  • 婚恋网站上认识人 带你做原油交易怎么用手机创造网站
  • 网站建设投标书服务方案范本天津北京网站建设公司
  • 网站建设好评公司微企点建站怎么样
  • 某网站开发项目成本估计推广普通话作文500字
  • 制作网站需要哪些工作网站建设佰金手指科杰十三
  • 外贸哪家做网站wordpress excel搜索
  • 苏州做网站推广的英文搜索网站
  • 政务微网站建设方案深圳市易捷网络科技有限公司