在学习编程语言的时候,特别是web相关的,大家一定会用到数据库,开始的时候也就是些增删改查,慢慢随着应用的增加,是不是想学习下数据库编程了呢?最近我也开始学oracle plsql编程了,现在就和大家分享下最基础的语句块的入门吧,也算是这么语言的HelloWorld

 

使用的坏境:windows xp ,数据库oracle11g 工具 plsql developer

使用方案:oracle实例默认的scott方案,命令窗口方式学习,使用的表emp

 

让我们来看看oracle plsql块的基本结构

 

  1. DECLARE 
  2. /** 
  3.  
  4. 定义部分—常量,变量,复杂数据类型,游标等等 
  5.  
  6. */ 
  7. BEGIN 
  8. /** 
  9.  
  10. 执行部分—plsql语句 sql语句 (这是不可缺少的部分,但是声明和例外处理却是可以省略的 
  11.  
  12. */ 
  13. END 
  14. /** 
  15.  
  16. 例外处理部分—处理运行的错误 
  17.  
  18. */ 

让我们看看怎么输出个”Hello World!”


  1. --简单输出 
  2.  
  3. Begin 
  4.  
  5.  --这是什么函数呢,dbms_output是oracle里的包名,put_line是过程名称 
  6.  
  7. --就好像我们其他语言中的内置函数啦 例如System.out.print(); 
  8.  
  9.   dbms_output.put_line('Hello World!'); 
  10.  
  11. end

 在命令窗口最后要用个 /,才能执行哦


[oracle编程]pl/sql --语句块_数据库

看看执行结果:


  1. PL/SQL procedure successfully completed 

怎么没有HelloWorld!啊,哎这破数据库,其实是你没有打开控制台输出哦

试试这一句:


  1. SQL> set serveroutput on; 

再把代码放上去执行下:


[oracle编程]pl/sql --语句块_plsql_02

这次总算是正常了。

 

那看看带有变量声明的块


  1. --带有声明的输出 
  2. Declare 
  3. --变量一般用v_开头,比较容易阅读,至于字符类型,长度,能接收到需要的值就行了 
  4.   v_name varchar2(20); 
  5.   v_sal number(7,2); 
  6. begin 
  7. --这里的变量赋值很有意思,看清楚语法了吗 
  8. --就是在原有的查询语句中加入了into v_name,v_sal这句话,取到值放到变量中 
  9. --&是对话框的输入符号,至于&n &nn 都是无所谓的,就是个变量名称 
  10.   select ename,sal into v_name,v_sal from emp where empno =&n; 
  11.   --在控制台显示用户名,||是连字符号 
  12.   dbms_output.put_line('name:' || v_name||'  sal:'||v_sal); 
  13. end

 

执行的时候别忘了另起一行加个 “/

看看结果吧


[oracle编程]pl/sql --语句块_plsql_03


[oracle编程]pl/sql --语句块_数据库_04

查查原来的表:


[oracle编程]pl/sql --语句块_oracle_05

还是比较正确的嘛。

 

 

 

 

带有例外处理的块

如果我们输入了一个表中没有的号码呢?

在对话框中入000


[oracle编程]pl/sql --语句块_oracle_06

得到的结果

[oracle编程]pl/sql --语句块_oracle_07

竟然报错了

那我们给程序添加点异常处理块吧,也就是增加一个exception捕获,加入我们事先知道错误类型

 

  1. --带有声明的输出 
  2. Declare 
  3.   --变量一般用v_开头,比较容易阅读,至于字符类型,长度,能接收到需要的值就行了 
  4.   v_name varchar2(20); 
  5.   v_sal number(7,2); 
  6. begin 
  7. --这里的变量赋值很有意思,看清楚语法了吗 
  8. --就是在原有的查询语句中加入了into v_name,v_sal这句话,取到值放到变量中 
  9. --&是对话框的输入符号,至于&n &nn 都是无所谓的,就是个变量名称 
  10.   select ename,sal into v_name,v_sal from emp where empno =&n; 
  11.   --在控制台显示用户名,||是连字符号 
  12.   dbms_output.put_line('name:' || v_name||'  sal:'||v_sal); 
  13. end; 

再看看输入00的结果

[oracle编程]pl/sql --语句块_sql编程_08

是不是人性多了。

 

这也就是个最简单的案例,plsql作用可大了,对于复杂的数据逻辑也能很好的处理,先打好基础,慢慢学吧。