打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Oracle 存储过程入门(一)

一,基本入门介绍

公司系统需要用到oracle,可是还没在项目用过oracle,好吧,从基本学起。有问题的地方,欢迎指导啊。

看创建存储过程的基本定义。注意,带有[]的都是可选的,可有可无的。只是语法能通过,当然根据自己需要处理。

还是从简单例子开始学习,

CREATE [OR REPLACE] PROCEDURE procedure_name    [ (parameter [,parameter]) ]IS    [declaration_section]BEGIN    executable_section[EXCEPTION    exception_section]END [procedure_name];

 

先初始化数据。我用的是Toad工具,下面的代码是在SQL Editor 中执行的。

create table students(   ID int,  userName varchar(100),  userPass varchar(100),  userAge  int)insert into students values(1,'jack','jjjaa',23);insert into students values(2,'rose','jjjaa',21);insert into students values(3,'lucy','jjjaa',22);insert into students values(4,'Tony','jjjaa',24);commit;

 

当然,新建存储过程是需要在Procedure Editor中编写,但是执行存储过程又需要在SQL Editor中去执行,Procedure中是不可以执行(like exec的语句)的。

这里我们新建一个存储过程,对于某个用户添加年龄,哈哈,当然这个是没什么意义的,学习,从简单入手。在实际开发中,语法,原理是一样的。

create or replace procedure  SP_Update_Age( uName in varchar,--note,here don't have length ,sql have lenth ,not in oracle. Age in int)asbegin    update students set UserAge = UserAge + Age where userName = uName;    commit;end SP_Update_Age;  

 

在执行存储过程之前,我们先查看原来的数据。

select * from students/*********************ID    USERNAME    USERPASS    USERAGE1    jack            jjjaa        232    rose            jjjaa        213    lucy            jjjaa        224    Tony            jjjaa        24**********************/

 

然后我们在SQL Editor中执行如下存储过程。注意看是怎么调用的:

exec SP_UPDATE_AGE('jack',1);

 

执行之后,查看数据,

select * from students;/********************ID    USERNAME    USERPASS    USERAGE1    jack    jjjaa    24  --noted,have changed 2    rose    jjjaa    213    lucy    jjjaa    224    Tony    jjjaa    24*********************/

 

二,基本语法介绍

可以看出,基本的功能实现,调用完成。

下面,来看看基本语法:

1,变量赋值

 变量名 := 值;

2,判断语句。

if

比较式

then

begin

end;

end

if

结合起来写个简单例子:

create or replace procedure Test(x in out number)isbegin     if x<0 then         begin             x:= 0 - x;        end;     elsif x > 0 then     --noted here elsif          begin             x:= x ;        end;     else        x:=    0;     end if;end Test;

 

 

Test:

set serveroutput on;  --没这句话,看不到dmbs_output信息。declare       num number;begin    num:= -1;    test(num);    dbms_output.put_line( 'num = ' || num );end;/******************************num = 1PL/SQL procedure successfully completed.*******************************/

 

 

3,For循环,

For  in ..loop;

set serveroutput on;DECLARE   x NUMBER := 100;BEGIN   FOR i IN 1..10 LOOP  --noted here       IF MOD(i,2) = 0 THEN     -- i is even          dbms_output.put_line( 'i: '||i||' is even ' );      ELSE          dbms_output.put_line('i: '|| i||' is odd' );      END IF;      x := x + 100;      dbms_output.put_line('x value: '|| x);   END LOOP;   COMMIT;END;/*************************i: 1 is oddx value: 200i: 2 is even x value: 300i: 3 is oddx value: 400i: 4 is even x value: 500i: 5 is oddx value: 600i: 6 is even x value: 700i: 7 is oddx value: 800i: 8 is even x value: 900i: 9 is oddx value: 1000i: 10 is even x value: 1100PL/SQL procedure successfully completed.*************************/

 

 

后面再说遍历什么游标啊,数组啊。先从简单的 开始。

4,While 循环。

create or replace Procedure Test2(i in out number)asbegin     while i < 10 loop            begin                   i:= i+1;           end;          end loop;end Test2;

 

来测试下。

set serveroutput on;declare       num number;begin    num:= 1;    test2(num);    dbms_output.put_line( 'num = ' || num );end;/*********************num = 10PL/SQL procedure successfully completed.***********************/

 

 

第一篇就先写到这里,对Oracle的存储过程有个简单的认识。

 

共同学习,共同进步!
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
ORACLE PL/SQL编程之把过程与函数说透
Oracle查看表、存储过程、触发器、函数等对象定义语句的方法 .
全面学习ORACLE Scheduler特性(3)使用Programs
关于oracle PL/SQL存储过程 PLS-00905 object is invalid,statement ignored问题的解决
干货分享!《Oracle 存储过程加密之wrap工具》
使用 DBMS
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服