JAVA学习笔记(PL/SQL)

1.1什么是PL/SQL

PL/SQL(ProceduralLanguage/SQL)是Oracle在标准SQL的基础上增加了过程化处理,把DML和select语句组织在PL/SQL代码的过程性单元中,通过逻辑判断、循环等操作,实现复杂的功能或者计算的程序语言。

扩展:变量和类型、控制结构、过程与函数。

注意事项:

        java中是写方法,把复杂的业务逻辑写入方法中,再调用方法。

       PL/SQL是写过程、函数,把复杂的业务逻辑写入过程、函数中,再调用它们。

1.2PL/SQL程序结构

         PL/SQL块:包含三部分,声明部分:declare;执行部分:begin;异常处理:exceptioneg1:语法

declare

             v_AccountIDnumber(5):=1001;

             v_RealNamevarchar(20);

begin

         selectreal_nameinfov_RealNamefromaccountwhereid=v_AccountID;

exception

          when on_data_foundthen

                    insertinfoFee_Log(desrc)values('Account1001 dece notexit!')commin;

end;--(不需要理解代码的具体含义!)

注意事项:最简写的方式为begin   end;

eg2:打印HelloWorld

         begin

                 dbms_output.put_line('HelloWorld');

          end;

注意事项:

        dbms_output是系统提供的包package,包含多个过程、函数。其中的过程put_line实现的是输出功能,只有一个参数,只能为“字符类型”(日期和数值也可,系统自动转换!布尔类型不行!但java中可以),用于接收需输出的字符串。在sql工作表子窗口中可以调用存储过程。

         想要在屏幕上输出需要写:setserveroutputon(在begin上面写)。

         如何调用过程:begin包名.过程名();所有过程都是没有返回值的,即java中的void。

1.3 PL/SQL运行过程

       如下图所示:

1.4注释

      增加可阅读性,使程序更容易理解。编译时将被忽略。

      1)单行注释:由两个连字符“--”开始,到行尾都是注释。

       2)多行注释:由“/*”开头,由“*/”结尾。

2.1数据类型

      标量类型:数字型、字符型、日期型、布尔型;可以直接用的。复合类型:record、associativearray、nestedtable、varray;需要自己去定义的。

2.2标量类型

1)数字类型:①number②number的子类型dec(38)、float(38)、real(18)…③binary_integer(只能在PL/SQL中用),按10进制赋值,但存的时候会换成2进制存。优势是计算快。

2)字符类型:①varchar2、varchar(长度:1.~32767)②string(只能在PL/SQL中用,长度:1.~32767)③char(长度:1~32767)④long

3)日期类型:date 

4)布尔类型:boolean

     ①用于存储逻辑值true,false,null(java中只有true,false)。

    ②不能向数据库中插入boolean类型的数据。

    ③不能将列值保存到boolean变量中。

    ④只能对boolean变量执行逻辑操作。

2.3变量声明

1)语法:var_nametype[constant][notnull][:=value];

      注意事项:PL/SQL规定没有初始化的变量为null。

2)直接定义类型

declare

            v_n1 number:=1;--赋初值要有“冒号”,PL/SQL中赋值和等号是区分开的

           v_c1varchar2(10);

           v_d1 date:=sysdate;--sysdate是函数,有返回值

          begin

注意事项:

         PL/SQL中没返回值的叫过程;有返回值的叫函数,且必须有指向(要么打印出,要么赋值给变量)。所以,过程和函数的调用是不一样的。

        java中的方法一种没有返回值,一种是有返回值;有返回值的如果没返回,则会丢弃。但PL/SQL不行!

3)%type方式:变量具有与数据库的表中的某列或其他变量相同的类型。

eg1:三种声明方式

declarev_RealNamevarchar2(20);

declarev_RealNameaccount.real_name%type;declarev_TempVarnumber(7,3)notnull:=12.3;

        v_AnotherVarv_TempVar%type:=12.3;

eg2:定义变量,打印系统时间,并输出它们的值

setserveroutputon declare

       v_d1 date:=sysdate;

       v_c1varchar2(20);

begin

       v_c1:=to_char(v_d1,'yyyymmdd hh24:mi:ss'); 

       dbms_output.put_line('Currentdateis'||v_c1);

                                         --put_line只有一个参数,所以必须拼接!

end; 

4)复合类型

record类型、集合类型。

�3.1条件语句

1)if语句

方式一:

      if    then

              statement;

       endif;//最简写的方式方式二:

      if      then

          statement;

       else

           statement1;

       end     if;

方式三:

if       boolean_expr    then

         statement;

elsif       boolean_expr    then

        statement1;

else

statement2;


常用数据库对象简介(函数存储过程包)

函数是Oracle中的一个可以单独存在的数据库对象,主要用于封装一些业务处理逻辑,同时在处理完成相关逻辑之后必须返回一个结果值

语法格式说明:

a. 创建函数的关键字为 FUNCTION

b. 函数名可以自定义,不能与系统已有的冲突

c. 函数的参数可以根据需要有多个,也可以没有参数

d. 函数一定有返回值,而且返回值的类型和函数的定义中的返回值类型必须保持一致

与函数类似,存储过程也是一种可以单独存储在Oracle数据库中的一种对象,也是用于封装一些业务处理逻辑,只是存储过程没有返回值,但是有输出


语法格式说明:

e. 创建存储过程的关键字为 PROCEDURE

f. 存储过程名可以自定义,不能与系统已有的冲突

g. 存储过程的参数可以根据需要有多个,也可以没有参数,其中 IN 或者OUT是用于标识该参数是输入参数还是输出参数的

h. 存储过程没有返回值,但是可以有输出参数

函数和存储过程的区别

相同点:

函数和存储过程都是数据库中的数据对象,可以单独存储;

函数和存储过程都是可以处理相关的业务逻辑;

函数和存储过程都是可以存在于PLSQL代码块中的

不同点:

函数有返回值,而存储过程没有;

存储过程有输出参数,而函数没有;

函数可以存在于SQL查询语句中,而存储过程不可以

包 PACKAGE,也是数据库中的一种对象,一般主要用来管理一组函数和存储过程的单元,我们可以把某一类型或者某一个功能模块的函数和存储过程统一定义在一个包中,便于维护和管理

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,496评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,407评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,632评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,180评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,198评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,165评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,052评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,910评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,324评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,542评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,711评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,424评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,017评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,668评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,823评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,722评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,611评论 2 353

推荐阅读更多精彩内容