Oracle基础语法

=========================Oracle数据库简单语句============

--%TYPE类型
--SQL>
declare
 var_name varchar2(100);--ZM_TREE.Fname%type;
 var_type varchar2(100);--ZM_TREE.Flinktype%type;

 begin
 SELECT t.fname,t.flinktype
 into var_name,var_type
 from zm_tree t
 where flinktype=‘公司‘;
--单条记录输出
 dbms_output.put_line(var_name||‘  类型为:  ‘||var_type);
 end;

--record类型
--SQL>
declare
type emp_type is record
(
var_name varchar2(20),
var_type varchar2(20),
var_sort varchar2(200)
);
empinfo emp_type;

begin
--查询的顺序和record的定义的顺序是一样的
select t.fname,t.flinktype,t.fsort into empinfo from ZM_TREE t where t.flinktype=‘公司‘;
--单条记录输出
dbms_output.put_line(‘名称:‘||empinfo.var_name||‘——类型:‘||empinfo.var_type||‘——排序:‘||empinfo.var_sort);
end;

--%rowtype类型
--SQL>
declare
rowVar_emp ZM_TREE%rowtype;
begin

SELECT * into rowVar_emp FROM ZM_TREE t where t.flinktype=‘公司‘;
/*输出信息*/--单条记录输出
dbms_output.put_line(‘名称:‘||rowVar_emp.fname||‘——类型:‘||rowVar_emp.FLINKTYPE||‘——排序:‘||rowVar_emp.Fsort);
end;

--变量 常量
var_str varchar2(30):=‘中国‘;
var_num constant number(8,4):=20;

--secondday
--》》》流程控制
--if
--SQL>
declare
var_str1 varchar2(200);
var_str2 varchar2(300);

begin
  var_str1:=‘121321‘;
  var_str2:=‘21321321‘;
if length(var_str1)>length(var_str2) then
  dbms_output.put_line(var_str1);
  else
    dbms_output.put_line(var_str2);
end if;
end;

--if elseif
--SQL>
declare
num_age int :=&请输入年龄;
begin
if num_age>=56 then
dbms_output.put_line(‘您可以申请退休了‘);
elsif num_age<56 then
dbms_output.put_line(‘您小于56岁,不可以申请退休!‘);
else
dbms_output.put_line(‘对不起,年龄不合法!‘);
end if;
end;

--SQL>
declare
num_age int :=&请输入年龄;
aboutinfo varchar2(50);
begin
if num_age>=56 then
aboutinfo:=num_age||‘您可以申请退休了‘;
elsif num_age<56 then
aboutinfo:=num_age||‘您小于56岁,不可以申请退休!‘;
else
aboutinfo:=num_age||‘对不起,年龄不合法!‘;
end if;
dbms_output.put_line(aboutinfo);
end;

--Case
declare
season int :=&请输入季度数字;
aboutinfo varchar(50);
 begin
   case season
     when 1 then
       aboutinfo:=season||‘季度包含1,2,3月度‘;
     when 2 then
       aboutinfo:=season||‘季度包含4,5,6月度‘;
     when 3 then
       aboutinfo:=season||‘季度包含7,8,9月度‘;
     when 4 then
       aboutinfo:=season||‘季度包含10,11,12月度‘;
      else
        aboutinfo:=‘输入的值不合法‘;
        end case;
        dbms_output.put_line(aboutinfo);
   end;

--》》》循环语句
--loop语句  一直运行到exit when end_condition_exp 为true时退出
declare
sum_i int:=0;
i int:=0;
begin
 loop
  i:=i+1;
  sum_i :=sum_i + i;
 exit when i = 100;
end loop;
dbms_output.put_line(‘前100个自然数的和是:‘||sum_i);
end;

--while循环
declare
sum_i int:=0;
var_i int:=0;
begin
while var_i<100 loop
  var_i:=var_i+1;
  sum_i:=sum_i+var_i;
  end loop;
  dbms_output.put_line(‘前100个自然数的和是:‘||sum_i);
  end;

--for 语句
declare
sum_i int:=0;
begin
 for i in reverse 1..100 loop -- reverse 表示i从100递减
  sum_i:= sum_i+i;
 end loop;
dbms_output.put_line(‘前100个自然数的和是:‘||sum_i);
end;

--》》》游标
/*
游标属性:
cur_tmp%found 至少影响到一行数据为true;
cur_tmp%notfound 与%found相反
cur_tmp%rowcount 返回受SQL语句影响的行数
cur_tmp%isopen 游标打开时为true
*/
declare
cursor cur_emp(var_ID in varchar2:=‘lili‘)
is select t.flinkcode,t.fname,t.flinktype
from ZM_TREE t
where flinkcode like var_ID||‘%‘;
type record_emp is record
(
var_name ZM_TREE.FLINKCODE%type,
var_type ZM_TREE.Fname%type,
var_sort varchar2(200)
);
emp_row record_emp;
begin
 DBMS_OUTPUT.ENABLE(buffer_size => null);--表示输出buffer不受限制
 open cur_emp(‘2‘);--得到游标值
 fetch cur_emp into emp_row;--循环游标
 while cur_emp%found loop
   dbms_output.put_line(‘名称:‘||emp_row.var_name||‘——类型:‘||emp_row.var_type||‘——排序:‘||emp_row.var_sort);
  fetch cur_emp into emp_row;
 end loop;
 close cur_emp;--关闭游标
end;

--for 中使用cursor 不用进行打开游标、读取游标、关闭游标 oracle内部自动完成
declare
var_ID varchar2(200):=&输入编码;
cursor cur_emp is
select t.flinkcode var_name,t.fname,t.flinktype from ZM_TREE t where flinkcode like var_ID||‘%‘;

begin
 DBMS_OUTPUT.ENABLE(buffer_size => null);    --表示输出buffer不受限制
 for emp_info in cur_emp loop
   --显示的名称和列别名称一样
   dbms_output.put_line(‘名称:‘||emp_info.var_name||‘——类型:‘||emp_info.fname||‘——排序:‘||emp_info.flinktype);
 end loop;
end;

begin
 DBMS_OUTPUT.ENABLE(buffer_size => null);    --表示输出buffer不受限制
 for emp_info in (select t.flinkcode var_name,t.fname,t.flinktype from ZM_TREE t where flinkcode like ‘2%‘) loop
   dbms_output.put_line(‘名称:‘||emp_info.var_name||‘——类型:‘||emp_info.fname||‘——排序:‘||emp_info.flinktype);
 end loop;
end;

--》》》异常处理
/*
预定义异常
自定义异常
*/
--预定义异常
declare
var_empno t_cscustomer.cust_no%type;
var_empname t_cscustomer.cust_name%type;
begin
select cust_no,cust_name into var_empno,var_empname from t_cscustomer where cust_no like ‘00%‘;
if sql%found then
 dbms_output.put_line(‘雇员编号:‘||var_empno||‘、名称:‘||var_empname);
end if;
exception
 when too_many_rows then
  dbms_output.put_line(‘返回记录超过一行‘);
 when no_data_found then
  dbms_output.put_line(‘无数据记录‘);
end;

/*drop table dept_tmp;
create table dept_tmp(
  DEPT_NO         VARCHAR2(12) primary key not null,
  DEPT_NAME       VARCHAR2(50),
  LOCATION        VARCHAR2(200)
);
*/
create or replace procedure pro_insertTmp is
begin
 insert into dept_tmp values(1,‘市场拓展部‘,‘join‘);
 commit;
 dbms_output.put_line(‘插入dept_tmp新记录成功‘);
end pro_insertTmp;

--执行pro_insertTmp
--execurte pro_insertTmp;
exec pro_insertTmp;

begin
 pro_inserttmp;
  end;

/**存储过程参数过程包括:in 输入参数、out 输出参数、in out可被修改的输入参数,并作为输出参数**/
-->>in
create or replace procedure pro_insertDept(v_deptno in varchar2,v_deptname in varchar2,v_loc in varchar2) is
begin
 insert into dept_tmp values(v_deptno,v_deptname,v_loc);
 commit;
 dbms_output.put_line(‘通过in参数插入dept成功!‘);
end pro_insertDept;

  --不按顺序传入参数,指定参数值
declare
  i int:=1;
begin
  while i<20 loop
  -- pro_insertDept(v_deptname=>‘采购部‘,v_loc=>‘成都‘,v_deptno=>‘2‘);
 pro_insertDept(v_deptno => i,v_deptname => ‘采购部‘||i,v_loc => ‘成都‘||i);
   i:=i+2;
 end loop;
end;

-->>out
create or replace procedure pro_selectDept(v_deptno in varchar2,v_deptname out dept_tmp.dept_name%type,v_loc out dept_tmp.location%type) is
begin
 select dept_name,location into v_deptname,v_loc from dept_tmp where dept_no=v_deptno;
exception
 when no_data_found then
  dbms_output.put_line(‘该编号的部门不存在!‘);
end pro_selectDept;

declare
var_deptname dept_tmp.dept_name%type;
var_loc dept_tmp.location%type;
var_deptno dept_tmp.dept_no%type:=&21;
begin
  pro_selectDept(var_deptno,v_deptname => var_deptname,v_loc => var_loc);
  dbms_output.put_line(var_deptname||‘位于:‘||var_loc);
  end;

variable v_deptname varchar2(50);
variable v_loc varchar2(50);
exec pro_selectDept(‘1‘,:v_deptname,:v_loc);
print v_deptname v_loc;
select :v_deptname,:v_loc from dual;

create or replace procedure pro_square(num in out number,flag in boolean) is
i int:=2;
begin
 if flag then
  num := power(num,i); --计算平方
 else
  num := sqrt(num); --计算平方根
 end if;
end pro_square;

  

时间: 2024-10-29 10:46:48

Oracle基础语法的相关文章

JSP/Servlet基础语法

相关学习资料 http://my.oschina.net/chape/blog/170247 http://docs.oracle.com/cd/E13222_01/wls/docs81/webapp/web_xml.html http://blog.csdn.net/liaoxiaohua1981/article/details/6761053 http://computer.c.blog.163.com/blog/static/102524482012314537670/ http://ww

Oracle基础实训

一.Oracle基础SQL练习 班级表:班级编号(主键.标识列).班级名称.班主任.开班日期老师表:老师编号(主键.标识列) .姓名.性别(默认值‘男’).身份证号(必须是18位数字).联系电话学生表:学号(主键.固定五位数字) .班级编号.姓名.性别.出生日期.联系电话.家庭地址成绩表:编号(主键.标识列) .学号.科目名称.分数 1.表格创建 create table();语法 CREATE TABLE [schema.]table (column datatype [DEFAULT exp

SQL基础语法和函数

SQL常用查询语句和函数 (2012-05-09 09:44:55) 转载▼ 标签: sql查询 函数 sql常用语句 it 分类: SQL SQL SELECT 语法 SELECT 列名称 FROM 表名称 SELECT LastName,FirstName FROM Persons --------------------------------------------------------------------------------- SQL SELECT DISTINCT 语句 在

Oracle基础 数据库备份和恢复

原文:Oracle基础 数据库备份和恢复 一.为什么需要数据备份 造成数据丢失的主要原因: 1.介质故障. 2.用户的错误操作. 3.服务器的彻底崩溃. 4.计算机病毒. 5.不可预料的因素. Oracle中故障类型分为以下4种. 1.语句故障: 执行SQL语句过程发生的逻辑故障可导致语句故障.如果用户编写的SQL语句无效,就会发生语句故障.Oracle可自我修复语句故障,撤销语句产生的而印象,并将控制权交给应用程序. 2.用户进程故障 当用户程序出错而无法访问Oracle数据库时,就会发生用户

从0开始学大数据-Java基础语法(2)

我们从零开始学习大数据技术,从java基础,到Linux技术涉猎,再深入到大数据技术的Hadoop.Spark.Storm技术,最后到大数据企业平台的搭建,层层递进,由点到面!希望技术大牛能过来指导学习. 上一节了解Java的发展史和基本操作,本节我们开始学习Java语言的基础语法,将会围绕以下几个知识点进行展开学习: 关键字 标识符 注释 常量和变量 运算符 语句 函数 数组 PS:本节先学习前面4个知识点. 1.关键字 关键字的概述 · 被Java语言赋予特定含义的单词 关键字的特点 · 组

JavaScript:基础语法

JavaScript:基础语法 注释 JavaScript的语法和Java语言类似,每个语句以;结束,语句块用{...}.但是,JavaScript并不强制要求在每个语句的结尾加;浏览器中负责执行JavaScript代码的引擎会自动在每个语句的结尾补上;.JavaScript严格区分大小写,如果弄错了大小写,程序将报错或者运行不正常. 注释: // 这是一行注释 alert('love qinjiang'); // 这也是注释 /* 从这里开始是块注释 仍然是注释 仍然是注释 注释结束 */ 变

Java基础语法

Java的基础语法中包含字符集.标识符和关键字.变量和常量.语句.注释.运算符和表达式这些基本要素. 一.关键字 编程语言都有一些保留的单词,用于定义该语言,这些单词对于编译器有特殊含义,不能作为标识符使用: Java中的true.false.null这三个保留字,不能作为标识符使用,对于编译器有特殊含义: main是一个用于描述Java程序开始方法的特殊名称,它不是一个关键字: abstract 抽象 boolean 逻辑运算: 布尔 break 打破: 断开 byte 字节: case 例,

关于JS脚本语言的基础语法

JS脚本语言的基础语法:输出语法  alert("警告!");  confirm("确定吗?");   prompt("请输入密码");为弱类型语言: 开始时要嵌入JS代码:<script type="text/javascript"></script>: 关于写程序是需注意的基本语法:1.所有的字符全都是英文半角的:2.大部分情况下每条语句结束后要加分号:3.每一块代码结束后加换行:4.程序前呼后应:

前端学PHP之正则表达式基础语法

前面的话 正则表达式是用于描述字符排列和匹配模式的一种语法规则.它主要用于字符串的模式分割.匹配.查找及替换操作.在PHP中,正则表达式一般是由正规字符和一些特殊字符(类似于通配符)联合构成的一个文本模式的程序性描述.正则表达式有三个作用:1.匹配,也常常用于从字符串中析取信息:2.用新文本代替匹配文本:3.将一个字符串拆分为一组更小的信息块.本文将详细介绍PHP中的正则表达式基础语法 [注意]关于javascript的正则表达式的详细信息移步至此 历史 在PHP中有两套正则表达式函数库,两者功