PLSQLWord文件下载.docx

上传人:b****3 文档编号:6654671 上传时间:2023-05-07 格式:DOCX 页数:36 大小:168.44KB
下载 相关 举报
PLSQLWord文件下载.docx_第1页
第1页 / 共36页
PLSQLWord文件下载.docx_第2页
第2页 / 共36页
PLSQLWord文件下载.docx_第3页
第3页 / 共36页
PLSQLWord文件下载.docx_第4页
第4页 / 共36页
PLSQLWord文件下载.docx_第5页
第5页 / 共36页
PLSQLWord文件下载.docx_第6页
第6页 / 共36页
PLSQLWord文件下载.docx_第7页
第7页 / 共36页
PLSQLWord文件下载.docx_第8页
第8页 / 共36页
PLSQLWord文件下载.docx_第9页
第9页 / 共36页
PLSQLWord文件下载.docx_第10页
第10页 / 共36页
PLSQLWord文件下载.docx_第11页
第11页 / 共36页
PLSQLWord文件下载.docx_第12页
第12页 / 共36页
PLSQLWord文件下载.docx_第13页
第13页 / 共36页
PLSQLWord文件下载.docx_第14页
第14页 / 共36页
PLSQLWord文件下载.docx_第15页
第15页 / 共36页
PLSQLWord文件下载.docx_第16页
第16页 / 共36页
PLSQLWord文件下载.docx_第17页
第17页 / 共36页
PLSQLWord文件下载.docx_第18页
第18页 / 共36页
PLSQLWord文件下载.docx_第19页
第19页 / 共36页
PLSQLWord文件下载.docx_第20页
第20页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

PLSQLWord文件下载.docx

《PLSQLWord文件下载.docx》由会员分享,可在线阅读,更多相关《PLSQLWord文件下载.docx(36页珍藏版)》请在冰点文库上搜索。

PLSQLWord文件下载.docx

var_idnumber;

var_namevarchar2(30);

var_id:

=1001;

var_name:

3.变量的修饰

constantnotnull

eg.var_idconstantnumber:

=100;

var_namevarchar2(30)notnull:

=’a’;

一个变量声明为notnull必须赋初值,因为任何一个变量定义之后不赋值值都是null。

4变量数据类型

1.标量型(基本类型)

a)数字型(number,binary_integer)

b)字符型(char,varchar2(0-4K))

c)布尔型(boolean:

true,false,NULL)

d)日期型(date)

2.组合型

a)RECORD,TABLE,

3.参考类型引用类型

a)refcursor

4.大类型

a)CLOB(0-4G)

b)BLOB(0-4G)

c)BFILE(0-4G)(一般不使用这种类型,因为存储数据的路径就可以解决问题)

eg.

NUMBER(4,3)123.4567//错误超出精度

NUMBER(3,-3)1234//1000

NUMBER(4,6)0.0012345//0.001235

5.定义两个变量分别和s_emp表中id和first_name的类型相同

把id=1的数据赋值给这个两个变量然后输出

declare

var_idnumber(7);

var_namevarchar2(25);

selectid,first_nameintovar_id,var_namefroms_empwhereid=1;

dbms_output.put_line(var_id||var_name);

6.使用%type得到表的字段对应的类型

表名.字段名%type

var_ids_emp.id%type;

var_names_emp.first_name%type;

selectid,first_nameintovar_id,var_namefroms_empwhereid=2;

dbms_output.put_line(var_id||'

7.把s_emp表中的idfrist_namesalary对应的类型取出来定义变量,然后把id=1的数据赋值给first_namesalary输出这些信息

8.记录类型record类型

/*定义一个类似于c语言结构体类型*/

type类型名isrecord(

字段名类型,

字段名类型

);

把s_emp表中的idfrist_namesalary对应的类型取出来定义变量,然后把id=1的数据赋值给first_namesalary输出这些信息

--定义一个记录类型

typeemptypeisrecord(

ids_emp.id%type,

names_emp.first_name%type,

salarys_emp.salary%type

--使用类型定义变量

var_empemptype;

var_emp2emptype;

--使用sql给记录类型的变量赋值

selectid,first_name,salaryintovar_emp2froms_empwhereid=1;

var_emp:

=var_emp2;

--整体赋值

dbms_output.put_line(var_emp.id||'

'

||var_emp.name||'

||var_emp.salary);

当查询出的字段少于记录中的字段时,单独使用记录中的字段,没有赋值的字段是null:

selectfirst_name,salaryintovar_emp.name,var_emp.salaryfroms_empwhereid=1;

记录中的字段赋值

var_emp.name:

=var_emp2.name;

--(c语言用strcpy,区别)

var_emp.salary:

=var_emp2.salary;

表名%rowtype取得表的一行对应的类型

s_dept%rowtype

s_emp%rowtype

eg:

--使用表的一行的类型定义一个变量

var_emps_emp%rowtype;

select*intovar_empfroms_empwhereid=1;

dbms_output.put_line(var_emp.id||'

||var_emp.first_name||'

//%rowtype就是一个字段名和表头中的字段名和字段顺序完全相同的记录类型。

类似于c数组的类型table类型

TYPEtabletypeISTABLEOFtypeINDEXBYBINARY_INTEGER;

行的数目由BINARY_INTEGER的范围决定:

-214743648---214743647

Key没有必要是顺序的可以用firstlastnext方法遍历

--定义一个table类型

typenumstypeistableofs_emp.id%typeindexbybinary_integer;

var_numsnumstype;

var_indbinary_integer:

=1;

var_nums

(1):

var_nums

(2):

=200;

var_nums(3):

=600;

selectsalaryintovar_nums(4)froms_empwhereid=1;

dbms_output.put_line(var_nums(var_ind));

var_ind:

=var_ind+1;

---------------------------------------------------------------------

/*table

下标不连续迭代器思想

first()得到第一个元素对应的下标

last()最后一个元素对应的下标

next(n)根据一个元素的下标得到下一个元素的下标

*/

typenumstypeistableofs_emp.id%typeindexbybinary_integer;

=var_nums.first();

=var_nums.next(var_ind);

=var_nums.last();

typetbistableofs_emp%rowtypeindexbybinary_integer;

tb1tb;

bidbinary_integer:

select*intotb1

(1)froms_empwhereid=3;

--得到一条记录

select*intotb1(5)froms_empwhereid=7;

bid:

=tb1.first();

dbms_output.put_line(tb1(bid).id||'

||tb1(bid).first_name);

=tb1.next(bid);

变量的作用域和可见性

<

<

abc>

>

--指定标签abc

declare--嵌套

var_mnumber:

begin

declare

var_mnumber:

var_nnumber:

begin

/*局部可以访问全局的*//*同名则局部优先*/

dbms_output.put_line(var_m);

--访问局部变量

dbms_output.put_line(abc.var_m);

--变量前面加全局标签访问

end;

/*全局不能访问局部的*/

dbms_output.put_line(var_n);

--错误

end;

1.分支语句

a.ifa>

bthen

endif;

b.ifa>

else

c.ifa<

elsifa<

cthen

dthen

declare

anumber:

=10;

bnumber:

=20;

cnumber:

=5;

ifa<

a:

=b;

elsifa<

=c;

else

dbms_output.put_line('

aisthemaxnumber'

);

endif;

themaxnumber:

||a);

var_anumber;

var_bnumber;

var_cnumber;

var_dnumber;

var_enumber;

var_maxnumber;

var_a:

=&

var_a;

var_b:

var_b;

var_c:

var_c;

var_d:

var_d;

var_e:

var_e;

var_max:

=var_a;

ifvar_max<

var_bthen

=var_b;

var_cthen

=var_c;

var_dthen

=var_d;

var_ethen

=var_e;

maxnumber:

||var_max);

2.循环语句

a.简单循环

loop

/*循环代码*/

endloop;

/*如何退出循环*/

1)exitwhen退出条件;

//之间退出循环,不执行任何语句

2)if退出条件

语句;

//退出前可以执行一些语句

exit;

var_inumber;

var_i:

=1;

loop

dbms_output.put_line(var_i);

ifvar_i>

10then

exit;

=var_i+1;

--exitwhenvar_i>

10;

endloop;

loopover'

b.while循环

1.while循环的语法

while循环条件loop

endloop;

2.while循环举例:

输出1到10

whilevar_i<

=10loop

3.while循环的退出(同loop)

exitwhen退出条件

if退出条件then…exit;

c.for循环------智能循环

1.for循环的语法

for变量ina..bloop

2.for循环举例:

begin

forvar_iin1..10loop

3.for循环中的变量不允许修改

4.如何反向输出输出10到1

forvar_iinreverse1..10loop

5.for循环的退出,同while

d.循环的嵌套

1.例子

3.使用类似于c语言的goto语句

4.plsql中可以把标签放前面

3.goto语句

使用goto完成输出1到10

plsql中的sql使用

select语句要和into结合使用。

dml(insertdeleteupdate)tcl(commitrollbacksavepoint)可以直接在plsql中使用

DDL(createdropalter)不能直接在plsql中使用,需要使用动态sql。

-------------------------------------------------------------------------------------------------------------

回顾:

常见的访问oracle的技术

plsql

proc/c++

odbc/ado

sqlj/jdbc

plsql的程序结构

/*申明区

定义变量和类型*/

/*执行区

执行sql语句和plsql语句*/

exception

/*异常处理区

处理程序错误的*/

---------------------------

plsql中定义变量

1.使用sql中类型来定义变量

变量名类型;

2.binary_integerboolean

constantnotnull

4.给变量手动赋值

使用sql语句给变量赋值

5.表名.字段名%type取得表的字段对应的类型

6.记录类型

字段名类型,

字段名类型

如何给记录类型赋值

当查询的字段数少于记录类型字段数

记录类型之间的赋值整体选择字段赋值

7.表的一行对应的类型

表名%rowtype

8.table类型

类似c语言的数组

type类型名istableof表中的类型

indexbybinary_integer;

变量名(下标):

=值;

当下标连续时的遍历

当下标不连续

迭代器思想

first()

last()

next(n)

--------------------------------

变量的作用域和可见性

局部优先

标签名>

plsql的控制语句

1.分支语句

if条件then

elsif条件then

while循环条件loop

c.for循环

for变量ina..bloop

---------------

d.循环的退出

exitwhen退出条件

if退出条件then

f.循环的嵌套

通过在内层循环中改变条件退出外层循环

使用goto可以直接在内层循环退出外层循环

使用exit标签名

------------------

3.goto语句

使用goto完成输出1到10

begin

var_i:

myloop>

ifvar_i<

11then

=var_i+1;

gotomyloop;

myloopover!

---------------------------------------------

plsql中的sql使用

1.select语句要和into结合使用。

2.dml(insertdeleteupdate)

tcl(commitrollbacksavepoint)

可以直接在plsql中使用

3.DDL(createdropalter)不能直接在plsql

中使用,需要使用动态sql。

动态sql:

把一个字符串对应的sql当做sql语句来执行

createtabletestsql(idnumber);

//静态的,运行后不能修改

‘createtabletestsql(idnumber)’

1.DDL:

的动态sql--DDL必须要用动态的sql

2.DML的动态sql

-------------------------------------------------------------------------------

为了解决字符串拼接的问题使用占位符简化拼接

占位符冒号开头使用using替代占位符号。

3.select语句的动态sql

能且只能返回一个结果

游标:

用来处理多行数据的一个数据类型

一条sql语句可以认为是匿名游标

1.游标的语法

a)声明游标

curson游标名issql语句;

b)打开游标

open游标名;

c)提取数据

i.非滚动游标提取数据必须是顺序的

ii.fetch游标名into变量名;

d)关闭游标

close游标名;

2.例:

把s_emp表中所有的数据放入一个游标中

i.输出前两天的idfirst_namesalary

3.遍历游标中所有的数据

a)游标的属性

%found是否发现新数据

游标必须处于打开状态如果没有打开游标使用则返回非法游标。

游标至少被fetch过一次如果没fetch则返回NULL值。

发现了新数据就返回true,否则返回false。

%notfound是否没有发现新数据

游标必须处于打开状态否则是非法游标

没有fetch则返回NULL值

发现了新数据就返回false,没有发现新数据就返回true.

%isopen游标是否打开

打开就返回true否则返回false

打开的游标不能在打开,关闭的游标不能在关闭。

%r

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2