Oracle:PL/SQL基本语法

使用Oracle SQL Developer

新建连接:配置Mysql

连接名随便写,

用户名:scott

密码:tiger

如果是超级用户,角色选择sysdba

主机名,如果是本机(推荐)就是localhost,如果是其他电脑,就写其他电脑的IP。(虚拟机最好选择桥接网卡)

端口1521

以后工作的时候数据库服务器都是单独的电脑,

配置好以后测试连接,

如何知道Oracle的端口呢,可以使用Fport,只能在XP上使用。

连接上以后就可以操作了,类似于SQLYog。


工具à首选项à代码编辑器à行装订线à显示行数   可以现实行号。

PLSQL

类似于JDBC中操作结果集。

 

--如果没有变量说明 ,declare可以省去

--PL/SQL Hello World

declare

         --变量说明

begin

         --程序

         dbms_output.put_line(‘HelloWorld’);

end;

/

--上面并没有输出,我们需要手动打开输出的开关:

set serveroutput on

/

--会打印HelloWorld

/*

文档的位置:

Oracle 文档的 Book 中,


看这两本书,上面的类似API文档,

下面的是语法手册。

一共有198个程序包。

*/

--通过desc也可以查看帮助文档结构:

desc dbms_output

 

PL/SQL语法

PL/SQL全称是ProcedureLanguage/SQL,是过程语言的SQL。是Oracle对SQL语言的过程化扩展。就是指在SQL命令中增加了过程处理语句(如分支,循环),使SQL语句具有过程处理能力。

JDBC与PL/SQL功能一样,为什么还要学习PL/SQL呢?

因为PL/SQL是SQL的一个扩展。

而操作数据库最快的程序语言应该是PL/SQL语言。

在我们的Java程序中,通过调用PL/SQL操作数据库,而不在通过程序直接对数据库进行增删改查。

PL/SQL是Oracle对SQL的扩展,SQLserver对SQL的扩展是Transact-sql,也叫做T-SQL。

 

完整语法格式

declare

         说明部分(变量说明,光标说明,例外说明)

begin

         语句序列 (DML语句)…

exception

         例外处理语句

end;

/

 

变量定义:

变量名在前面,类型在后面,类型与数据库列的类名一致,


在PL/SQL中赋值是通过 :=

My_name:引用型变量,emp.ename%type;意思为:使用emp表的ename列的类型作为my_name的类型。

引用型变量的好处就是:如果表中列的类型变了,程序可以不用改动。

--引用型变量示例:

set serveroutput on

declare

         pename emp.ename%type;

         psal         emp.sal%type;

begin

         --使用into将检索出来的数据赋值到变量中

         selectename,sal into pename,psal from emp whereempno=7839;

         --打印

         dbms_output.put_line(pename||’的薪水是’||psal);

end;

/

 

记录型变量:

emp_rec emp%rowtype;意思是取emp表中一行的类型作为emp_rec的类型。一行有多个列,可以把记录型变量理解为一个数组,这个数组中的每个元素就是这一行上的每一列。要引用其中的一列,使用:emp_rec.ename:=’ADAMS’;

--记录型变量示例:

--查询并打印员工号为7839的姓名和薪水。

set serveroutput on

declare

         --定义记录型变量,代表一行

         emp_recemp%rowtype;

begin

         --查询出empno7839的一行记录,将这一行记录赋值给emp_rec

--通过emp_rec.sal来使用emp_rec数组中列名为sal的数据。

        select * into emp_rec from emp whereempno=7839;

         dbms_output.put_line(emp_rec.ename||’的薪水是’||emp_rec.sal);

end;

/

 

IF语句

语法与Java完全一样。唯一区别是最后要加上END IF。还有ELSEIF的写法:


--示例:判断用户从键盘上输入的数字:

set serveroutput on

--获取键盘输入。prompt是提示信息,num是一个地址值,含义是在改地址上保存了键盘输入的值。

accept num prompt ‘请输入一个数字’;

declare

         --定义变量,问题是这个变量的值需要从键盘上获取,如何获取呢?

         --要写在declare的外面

         --在获取num的值得时候,因为num是一个地址值,所以取值的时候要加上取地址符。

         pnumnumber := #

begin

         --if判断

         ifpnum = 0 then dbms_output.put_line(‘您输入的是0’);

                   elseifpnum = 1 then dbms_output.put_line(‘您输入的是1’);

                   elseifpnum = 2 then dbms_output.put_line(‘您输入的是2’);

                   elsedbms_output.put_line(‘其他数字’);

         endif;

end;

/

 

循环语法:与Java完全一样


习惯用第二种,因为空值光标最容易。

--循环示例:打印1-10

set serveroutput on

declare

         pnumnumber := 1;

begin

         loop

                   --设定退出条件,当pnum>10的时候推出。

                   exitwhen pnum> 10;

                   dbms_output.put_line(pnum);

                   --定义自增,不能使用++,使用:=

                   pnum:= pnum+1;

         endloop;

end;

/

将数据插入到变量的时候,如果数据超过一条,就会报一个too many rows异常。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值