PL/SQL指南_MySQL, Oracle及数据库讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  MySQL, Oracle及数据库讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 4741 | 回复: 0   主题: PL/SQL指南        下一篇 
yang lin
注册用户
等级:上等兵
经验:144
发帖:8
精华:0
注册:2012-3-27
状态:离线
发送短消息息给yang lin 加好友    发送短消息息给yang lin 发消息
发表于: IP:您无权察看 2012-3-27 10:19:00 | [全部帖] [楼主帖] 楼主

简介

PL/SQL是一种程序语言,是oracle数据库对SQL语言的扩展,我们来复习本实验室的语言的基本特征,并学习如何集成到SQL来帮助解决数据库问题。

对PL/SQL的需要

SQL语句的定义是按照约束条件我们希望确定一个查询的结果。这样的语言通常被称为声明,这与所谓的程序语言的一个程式指定一个列表的操作顺序进行达到期望的结果形成对比,PL/SQL增加了selective (i.e.if…then…else…)和iterative constructs(i.e.loops)到SQL中。

PL/SQL对于写触发器和存储过程很有用。存储过程的单位的程序代码存储在汇编形式的数据库中。

PL/SQL的原理

Pl/sql程序被组织在功能函数,程序和程序包中(有点类似于JAVA包装)。有一个有限的支持面向对象的编程。PL/SQL是基于A大的编程语言,同样,它和pascal共享一些语法。你的第一个PL/SQL例子将是一个匿名的块—这是一个小程序,但既没有命名也没有在数据库中持续的存储。

SQL> SET SERVEROUTPUT ON    SQL> BEGIN    2   dbms_output.put_line('Welcome to PL/SQL');    3  END;    4  /


SET SERVEROUTPUT ON是SQL*plus命令启动控制台输出,你只需要在SQL*Plus对话中输入这些命令。

关键字BEGIN…END定义一个scope和花括号中的相等Java{…}

字符(;)标记一条语句的结束。

Put_lin函数在SQL*Plus控制台中的字符串。

表2涉及到操作清单,表3涉及到一些有用的内嵌函数。

编译你的代码

PL/SQL代码被提交到SQL*Plus中编译。(参见introduction to oracle)。

调试

除了你的程序是一个匿名的块之外,你的错误可能不被报道。反而,SQL*Plus 将显示显示这样的信息:``warning: procedure created with compilation errors''。

随后你将会需要键入:

SQL> SHOW ERRORS


来查看你的错误表。如果你不理解这些错误信息,并且你是在UNIX中用Oracle,你使用oerr utility可以得到更多的详细描述,另外,使用oracle的文档(参见相关参考文件)。比如,如果oracle报道“error PLS—00103”,你应该键入:

Oerr PLS 00103


UNIX的命令提示符(i.e.not in SQL*Plus)。

执行PL/SQL

如果你提交了程序到上面的oracle,你或许应该注意到立即执行。这是匿名程序块的原因,但是不适合程序和函数。最简单的办法来运行函数(e.g.sysdate)是从一个SQL语句中调用:

SQL> SELECT sysdate FROM DUAL    2  /


下面,我们将改写上面程序的匿名块。注意,我们将使用用户功能来问候用户。

CREATE OR REPLACE PROCEDURE welcome  IS    user_name VARCHAR2(8) := user;  BEGIN  -- `BEGIN' ex    dbms_output.put_line('Welcome to PL/SQL, '       || user_name || '!');  END;  /


确保你理解在代码中的改变:

声明type VARCHAR2型变量user_name

User_name使用user2的内建函数初始化

``:=''是赋值运算符(参见.表2)

一旦你已经编译了程序,用EXEC命令执行:

SQL> EXEC welcome


程序和函数使你回想起JAVA的方法。他们之间的异同见表1

Table 1: Functions, procedures and Java methods compared.
Function
Procedure
Java Method
Parameters
input, output
input, output
input
Returns value
yes
no
optional
Can be called within SQL
yes
no




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论