- 浏览: 1357028 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (453)
- Struts2 (4)
- Struts1 (16)
- Spring (9)
- Hibernate (5)
- AJAX (16)
- MS Server (9)
- Oracle (35)
- 测试技术 (5)
- 其他 (37)
- JSF (1)
- EJB (5)
- ASP.NET (9)
- iBATIS (5)
- Struts Spring Hibernate (2)
- HTML (12)
- Eclipse使用 (5)
- 设计模式 (5)
- JSP (32)
- 正则表达式 (2)
- 服务器 (12)
- Java基础 (48)
- MySQL (4)
- 面试 (22)
- UML (1)
- 数据结构 (3)
- Ant (2)
- 规范 (4)
- JavaScript (29)
- 软件使用及技巧 (25)
- PHP (1)
- DWR (3)
- FreeMarker (1)
- ExtJs (17)
- JFreeChart (9)
- Reports (2)
- JavaException (1)
- Java Mail (1)
- Flex (9)
- 异常 (12)
- Log4j (2)
- WebService (1)
- jQuery (1)
- Sybase (2)
- myeclipse_plugin (2)
- Linux (5)
- jbpm (2)
- SCM (1)
- mongoDB (1)
最新评论
-
lihua2008love:
<typeAlias alias="User& ...
IBATIS简单操作 -
lihua2008love:
...
关于项目框架设计的一点学习 -
c_jinglin:
我使用<OBJECT CLASSID="cls ...
这就是个静态页面通过js控制mscomm对某com设备进行访问的例子. -
zlbjava:
赞,用了还不错
java获取请求的ip地址,并解析ip所属地区 -
完美天龙:
cs842813290 写道楼主,我明白的地方:在链表已有N个 ...
JAVA实现双向链表
1、 PL/SQL的塊結構
如下
2、 錯誤處理
3、變量及類型
自帶基本類型
用戶自定義類型:
4、過程
1)這里先介紹一個錯誤過程,也是很多初學者都會犯的問題
錯誤過程 1:
錯誤過程 2:
2)過程的基本結構:
3) 一個完整的過程
4) 執行存儲過程
而不是像在SQL SERVER中的Call來調用
5、函數
--
6、包
1)寫的第一個包, 花了不少的檢查時間(有點類似于JAVA中的接口)
表的結構如下圖:
2)執行:
3) 包內過程、方法可以重載
4) 包的初使化
當第一次調用打包程序時,該包將進行初使化。也就是說將該包從硬盤讀入到內存并啟動調用的子程序的編譯代碼開始運行。這時,系統為該包中定義的所有變量分配內存單元。每個會話都有其打包變量的副本,以確保一包子程序的兩個對話使用不同的內存單元。
在大多數情況下,初使化代碼要在包第一次初使化時運行。為了實現這種功能,我們可以在包體中所有對象之后加入一個初使化部分,其語法如下:
7、取當前系統時間
8、更改表結構
注: 一定是MODIFY而不是sql server中的ALTER
Declare /* Declare section-PL/SQL variables,types,cursors,and local subprograms go here. */ Begin /* Executable section-procedural and SQL statements go here. This is ths main section of the bloack and the only one that is required. */ Exception /* Exception-handling section-error-handing statements go here */ End;注: 每個塊的結尾都要用分號結束
如下
declare fmajor varchar(50):='Chemistary'; ffirstName varchar(50):='Fff'; flastName varchar(50):='LB'; begin update students set major=fmajor where first_name=ffirstName and last_name=flastName; if SQL%NOTFOUND THEN insert into students values(student_sequence.NEXTVAL,ffirstName,flastName,fmajor); end if; end;
2、 錯誤處理
/**錯誤處理開始**/ Declare v_ErrorCode number; --code for the error v_ErrorMsg varchar2(200); --Message text for the error v_CurrentUser varchar2(20) --Current database user v_Information varchar2(100) --Information about the error Begin /*Code that processes some data here*/ Exception when others then --Assign values to the log variables,using built-in function v_ErrorCode:=SQLCODE; v_ErrorMsg:=SQLERRM; v_currentUser:=USER; V_Information:='Error encountered on' || to_char(SYSDATE) || ' by database user' || v_CurrentUser; --Insert the log message into log_table. Insert into log_table(code,message,infro) values(v_ErrorCode,v_ErrorMsg,v_ErrorInfomation); end; /**錯誤處理結束**/
3、變量及類型
自帶基本類型
用戶自定義類型:
Declare type t_StudentRecord is record( FirstName varchar2(50); LastName varchar2(50); CurrentCredits number(3); );定義:v_Student t_StudentRecord;
4、過程
1)這里先介紹一個錯誤過程,也是很多初學者都會犯的問題
錯誤過程 1:
CREATE or replace PROCEDURE changOrInsert AS Declare --<出錯誤之處。原因,受塊結構的影響> fmajor students.major%type:='Chemistary'; ffirstName students.first_name%type:='Fff'; flastName students.last_name%type:='LB'; begin update students set major=fmajor where first_name=ffirstName and last_name=flastName; end changOrInsert;
錯誤過程 2:
CREATE or replace PROCEDURE changOrInsert AS fmajor students.major%type:='Chemistary'; ffirstName students.first_name%type:='Fff'; flastName students.last_name%type:='LB'; begin update students set major=fmajor where first_name=ffirstName and last_name=flastName; if SQL%NOTFOUND THEN insert into students values(student_sequence.NEXTVAL,ffirstName,flastName,fmajor); end if; exception ; --<問題處。原因: 受其它開發語言如JAVA的影響> end changOrInsert;錯誤過程3:
create or replace procedure addNewColumn as firstID int:=10140; beginMark int:=65; loopTime int:=1; begin--仔細看下面這一條詔句。沒錯呀! 真的嗎?( 就錯在這里)
alter table students add mark int; --execute immediate 'alter table students add mark1 int';( 這句才是對的) loop update students set mark=beginMark where id=firstID; firstID:=firstID+1; beginMark:=beginMark+1; loopTime:=loopTime+1; exit when loopTime>20; end loop; end addNewColumn;
2)過程的基本結構:
Create [or replace] procedure procedure_name [parameter_list] as /*Declarative section is here*/ Begin /*Executable section is here*/ Exception /*Exception is here*/ End [procedure_name];
3) 一個完整的過程
/*Create a Procedure*/ CREATE or replace PROCEDURE changOrInsert( fmajor students.major%type, ffirstName students.first_name%type, flastName students.last_name%type) AS v_ErrorCode number; v_ErrorMsg varchar(200); v_currentUser varchar(50); v_Information varchar(500); begin update students set major=fmajor where first_name=ffirstName and last_name=flastName; if SQL%NOTFOUND THEN --if not found the record insert into students --then insert a new one values(student_sequence.NEXTVAL,ffirstName,flastName,fmajor); end if; exception --write exception into table log_table when others then --Assign values to the log variables,using built-in function v_ErrorCode:=SQLCODE; v_ErrorMsg:=SQLERRM; v_currentUser:=USER; v_Information:='Error encountered on' || to_char(SYSDATE) || ' by database user ' || v_CurrentUser; --Insert the log message into log_table. Insert into log_table(code,message,info) values(v_ErrorCode,v_ErrorMsg,v_Information); end changOrInsert;
4) 執行存儲過程
begin changOrInsert('Feng','LiBin','Computer'); end;
而不是像在SQL SERVER中的Call來調用
5、函數
--
6、包
1)寫的第一個包, 花了不少的檢查時間(有點類似于JAVA中的接口)
表的結構如下圖:
create or replace package manageStu as procedure addStu(firstname students.first_name%type, lastname students.last_name%type, majorm students.major%type, current_credits students.current_credits%type, markm students.mark%type); procedure delStu(stuID int); procedure modifyStu(idm int, firstname students.first_name%type, lastname students.last_name%type, majorm students.major%type, current_creditsm students.current_credits%type, markm students.major%type); end manageStu;
create or replace package body manageStu as procedure addStu(firstname students.first_name%type, lastname students.last_name%type, majorm students.major%type, current_credits students.current_credits%type, markm students.mark%type) as begin insert into students values(student_sequence.NEXTVAL, firstname, lastname, majorm, current_credits, markm); end addStu;
procedure delStu(stuID int) as begin delete students where id=stuID; end delStu; procedure modifyStu(idm int, firstname students.first_name%type, lastname students.last_name%type, majorm students.major%type, current_creditsm students.current_credits%type, markm students.major%type) as begin update students set first_name=firstname, last_name=lastname, major=majorm, current_credits=current_creditsm, mark=markm where id=idm; end modifyStu; end manageStu;
2)執行:
begin manageStu.addstu('F1','LB','computer',12,90); end;
3) 包內過程、方法可以重載
4) 包的初使化
當第一次調用打包程序時,該包將進行初使化。也就是說將該包從硬盤讀入到內存并啟動調用的子程序的編譯代碼開始運行。這時,系統為該包中定義的所有變量分配內存單元。每個會話都有其打包變量的副本,以確保一包子程序的兩個對話使用不同的內存單元。
在大多數情況下,初使化代碼要在包第一次初使化時運行。為了實現這種功能,我們可以在包體中所有對象之后加入一個初使化部分,其語法如下:
CREATE OR REPLACE PACEAGE BODY package_name (IS|AS) . . . BEGIN Initialization_code; END [package_name]
7、取當前系統時間
SELECT TO_CHAR(SYSDATE,'SSSSS') FROM sys.dual;
8、更改表結構
ALTER TABLE STU MODIFY FIRST_NAME VARCHAR(100);
注: 一定是MODIFY而不是sql server中的ALTER
发表评论
-
exp和imp,oracle9i导出导入数据,数据库备份,创建用户,删除用户
2009-04-16 21:57 3636执行下面这句,是创建用户 create user testkk ... -
Oracle批量创建用户和导入导出的脚本
2008-12-26 10:36 2555-- 在cmd下执行 SELECT 'exp ' || ... -
DBMS_SESSION.SET_CONTEXT的使用及无效权限问题的解决
2008-12-26 10:34 3122ORA-01031: insufficient privile ... -
sys用户使用@连接符提示无效权限的错误ORA-01031:
2008-12-26 10:30 2827问题:有同事反映,新安装的数据库使用 conn sys/ora ... -
Oracle创建主键时处理重复数据的程序
2008-12-26 10:29 2265/**************************** ... -
Oracle10g安装过程中"无法确定主机的IP地址时产生该异常错误" :解决办法
2008-08-23 08:40 45681. Oracle10g安装过程中出现“无 ... -
Oracle to_date用法
2008-06-26 15:29 3533Oracle to_date用法 日期格式参数 含义说明 D ... -
Java学习常用网站收集
2008-05-14 17:22 3308有网友说Java学习需要官方网站,想一下,发现有些框架的官方网 ... -
ORACLE数据库命名编码规范
2008-05-13 22:37 2260我在“管理”的论坛找到了答案,谁还有更多的,请指教!!! * ... -
ADO&ADO.NET 读取 Oracle 数据集
2008-05-13 22:22 2303使用 ADO.NET 访问 Oracle 9i 存储过程 ht ... -
通过批处理文件启动Oracle服务
2008-05-13 22:16 2166自己家里的机子配置不高,所有Oracle服务都是手动启动、关闭 ... -
Oracle常用及非常用函数
2008-05-12 17:11 5858感于总有些网友提出一 ... -
Oracle 9i的闪回查询概述
2008-05-11 23:59 2550Oracle 9i的闪回查询概述 ... -
使用分析单
2008-05-11 23:41 1103分析函数计算基于行组的值,并可以用来实现rownum伪列表述的 ... -
使用伪列Rownum
2008-05-11 23:31 1618对员工表进行排序,之后显示工资最多的前3名。 这么简单的问题想 ... -
oracle-merge用法详解
2008-05-11 22:28 2248Oracle9i引入了MERGE命令,你能够在一个SQL语句中 ... -
Oracle 数据字典(2)
2008-05-11 19:21 1522创建表的SQL语句如下-- 创建数据表create table ... -
Oracle 数据字典(1)
2008-05-11 19:14 1979Oracle数据库字典介绍 Oracle数据字典是有表和 ... -
AFTER DELETE Trigger
2008-05-11 07:33 3415An AFTER DELETE Trigger means t ... -
Oracle中常见数据类型转换
2008-05-11 07:28 1690To | From | CH ...
相关推荐
以下是对PL/SQL的学习笔记的详细解析: 1. **什么是PL/SQL语言** PL/SQL是Oracle数据库为数据库管理员和开发人员设计的一种编程语言。它扩展了SQL的功能,允许编写包含控制结构、变量、过程和函数的程序段,这些...
PL/SQL是Oracle公司开发的一种过程化SQL扩展,它是Oracle数据库的重要组成部分,用于在数据库服务器上编写存储过程、函数、触发器、包等可执行代码。PL/SQL可以处理复杂的数据操作和业务逻辑,支持编程结构如循环、...
PL/SQL数据库学习笔记 PL/SQL是一种高级的程序语言,主要用于Oracle数据库管理系统中。下面是PL/SQL数据库学习笔记的知识点总结。 一、基本原则 *瀑布模型:需求分析→设计(概要设计,详细设计:SQL语句,变量...
PL/SQL,全称是Procedural Language/Structured Query Language,是Oracle数据库提供的一种结合了SQL语言和过程式编程的编程环境。它扩展了SQL的功能,使得开发人员能够编写复杂的数据库应用程序,处理事务、实现...
在这个“我的PL/SQL学习笔记(一)”中,我们将探讨PL/SQL的基础知识,包括其语法结构、变量声明、流程控制以及如何与Oracle数据库中的数据进行交互。 首先,PL/SQL的基本结构分为声明部分、执行部分和异常处理部分...
### PL/SQL学习笔记4 —— 集合与成员函数 #### 一、PL/SQL 表(索引表) 在PL/SQL中,**索引表**(也称为**PL/SQL表**)是一种非常有用的结构,它类似于数组但具有更多的灵活性。这种表是非持久化的,即它们不会...
ORACLE PL/SQL是从入门到精通的专业知识,涵盖了数据库开发与管理的多个方面,包括...这本书籍将为读者提供一个全面、系统的学习路径,帮助数据库管理员、开发人员深入理解并掌握ORACLE PL/SQL的强大功能和应用技巧。
总的来说,“PL/SQL超级笔记”应该涵盖了从基本语法到高级特性的全面教程,通过学习,新手可以逐步掌握如何使用PL/SQL进行数据库编程,从而更好地管理和操作Oracle数据库。配合"oracle_ppt"中的PPT材料,学习效果会...
在PL/SQL编程中,游标是处理查询结果集的重要工具。它们允许程序逐行处理结果,而不是一次性加载所有数据,这对于大型数据集尤其有用,因为它可以节省内存并提高性能。下面将详细解释游标的基本概念、分类以及如何在...
### PL/SQL听课笔记 #### 一、PL/SQL简介 **PL/SQL**(Procedural Language for SQL)是一种专门为Oracle数据库设计的过程化语言扩展。它是在标准SQL基础上增加了一系列高级编程特性,如变量、控制结构、函数、...
权限管理是PL/SQL中不可忽视的一部分。与表和视图的SELECT, INSERT, UPDATE, DELETE权限不同,过程具有EXECUTE权限。只有拥有EXECUTE权限的用户才能执行存储过程。例如,可以通过`GRANT`命令将执行权限授予特定用户...
在PL/SQL的学习中,分区是数据库管理大型数据集的一种高效方法,特别是在处理大数据量时。本篇笔记主要探讨了何时应该使用分区以及Oracle支持的分区类型。 首先,当面对超过2GB的大数据表时,分区是十分必要的。这...
本文将深入探讨从"SQL,PL/SQL学习笔记"中提取的关键知识点,帮助编程人员更好地理解和运用这两种语言。 首先,我们关注SQL并行查询。通过`ALTER SESSION ENABLE PARALLEL DMl`,我们可以开启会话的并行DML操作,这...
这篇课堂笔记主要涵盖了基础的SQL查询语法和部分PL/SQL概念。 首先,SQL查询的基础是从数据库中选择数据。`SELECT`语句用于指定需要选取的列,如`SELECT ename, sal, job FROM emp;`。字段顺序可以自由调整,例如`...
### PL/SQL 学习笔记知识点详解 #### 1. PL/SQL 基本结构 - **DECLARE**: 在此部分声明变量、常量、数据类型及游标。 - **BEGIN**: 主程序体开始,可以包含任何合法的PL/SQL语句。 - **EXCEPTION**: 异常处理部分,...