PLSQL报表开发流程学习笔记

合集下载

PLSQL学习笔记

PLSQL学习笔记

PL/SQL学习笔记Java相关课程系列笔记之三笔记内容说明PL/SQL(薛海璐老师主讲,占笔记内容100%);目录 一、 PL/SQL 简介........................................................................................................................... 1 1.1什么是 PL/SQL.....................................................................................................................1 1.2 PL/SQL 程序结构................................................................................................................ 1 1.3 PL/SQL 运行过程................................................................................................................ 1 1.4注释 (2)二、变量与数据类型 (3)2.1数据类型...............................................................................................................................3 2.2标量类型...............................................................................................................................3 2.3变量声明. (3)三、流程控制语句 ....................................................................................................................... 5 3.1条件语句...............................................................................................................................5 3.2循环语句. (6)四、 PL/SQL 中的 SQL (9)4.1 PL/SQL 中的 SQL 分类.......................................................................................................9 4.2 DML (insert ,update ,delete )和 TCL (commit ,rollback )...................................... 9 4.3 DDL (9)五、 PL/SQL 中的select............................................................................................................11 5.1 select 语句的实现...............................................................................................................11 5.2 record 类型..........................................................................................................................11 5.3 %rowtype............................................................................................................................ 12 5.4 record 变量的引用..............................................................................................................12 5.5 cursor 的概念......................................................................................................................13 5.6 cursor 的分类......................................................................................................................13 5.7显式 cursor 的处理.............................................................................................................13 5.8显式 cursor 的属性.............................................................................................................14 5.9隐式 cursor 的属性.............................................................................................................14 5.10 cursor 的声明....................................................................................................................14 5.11 open cursor........................................................................................................................ 14 5.12 fetch cursor........................................................................................................................15 5.13结果集提取的控制...........................................................................................................15 5.14 close cursor (15)六、集合 (19)6.1什么是 collection................................................................................................................19 6.2什么是关联数组.................................................................................................................19 6.3 Associative arrays 的定义.................................................................................................. 19 6.4声明 Associative arrays 类型和变量.................................................................................19 6.5关联数组的操作.................................................................................................................20 6.6 Associative arrays 的方法.................................................................................................. 20 6.7关联数组的遍历.................................................................................................................21 6.8 Associative arrays 的异常.................................................................................................. 22 6.9批量绑定.. (22)七、异常 (25)17.1 Oralce错误 (25)7.2 Oralce错误处理机制 (25)7.3异常的类型 (25)7.4 PL/SQL中的异常 (25)7.5异常捕获 (25)7.6异常的捕获规则 (26)7.7 Oralce预定义错误的捕获 (26)7.8非Oracle预定义异常 (27)7.9用户自定义异常 (27)7.10异常处理总结 (28)7.11 sqlcode和sqlerrm............................................................................................................287.12异常的传播 (29)八、子程序 (30)8.1子程序 (30)8.2有名子程序 (30)8.3有名子程序的分类 (30)8.4有名子程序的优点 (30)九、过程procedure (31)9.1语法 (31)9.2创建存储过程 (31)9.3形参和实参 (31)9.4形参的种类 (32)9.5调用存储过程 (32)9.6存储过程中的参数 (32)9.7对实际参数的要求 (33)9.8形式参数的限制 (33)9.9带参数的过程调用 (33)9.10使用缺省参数 (33)9.11存储过程中的DDL语句 (34)9.12变量 (35)9.13 PL/SQL中的SQL分类 (35)9.14再一次来看SQL语句的处理过程 (37)9.15软分析和硬分析 (37)9.16对过程procedure的基本操作 (37)9.17案例 (37)十、函数function.........................................................................................................................3910.1语法 (39)10.2创建函数 (39)10.3调用函数 (39)10.4对函数function的基本操作 (40)10.5过程和函数的比较 (40)10.6匿名块中的过程和函数声明 (40)10.7案例 (40)2十一、包package.........................................................................................................................4211.1什么是package (42)11.2包的组成 (42)11.3包的优点 (42)11.4 package声明的语法 (42)11.5 package body声明的语法 (43)11.6编译包和包体 (43)11.7案例 (43)十二、触发器trigger (45)12.1面临问题 (45)12.2 DML触发器的组成 (45)12.3 DML触发器的类型 (45)12.4 DML触发器的触发顺序 (45)12.5 DML行级触发器 (45)12.6 :OLD和:NEW (45)12.7触发器的重新编译 (47)12.8触发器的状态 (47)十三、其他注意事项 (48)13.1 PL/SQL的特点 (48)13.2写PL/SQL的好处 (48)13.3命名建议 (48)13.4搞清楚如下内容 (48)13.5保证所有对象的状态都是 valid (48)13.6 declare中都可声明什么 (48)13.7数据库对象 (48)3一、PL/SQL 简介1.1什么是 PL/SQLPL/SQL (Procedural Language/SQL )是 Oracle 在标准 SQL 的基础上增加了过程化处理, 把 DML 和 select 语句组织在 PL/SQL 代码的过程性单元中,通过逻辑判断、循环等操作,实 现复杂的功能或者计算的程序语言。

PLSQL学习笔记

PLSQL学习笔记

一、PL/SQL基本语法要素1.相对其他语言特殊运算符=号是是否相等的比较运算符:=才是赋值运算符' ' 两个单引号之间表示字符类型的变量" " 双引号之间标识引用,如果字段名,数据库名等|| 表示字符之间的连接符--表示单行注释%属性指示器2.PL/SQL变量及数据类型1.变量类型标量类型:数值,字符,日期,布尔复合类型:索引表,嵌套表,数组引用类型:游标类型(CURSOR),对象类型(REF)LOB类型:大文本等2.使用%定义变量的类型跟某个表的列属性一致的变量的声明v_name %type 表示v_name 这个变量与表student中的列name 属性一样v_student student%rowtype 表示v_student这个变量客户存student中的一行数据3.用select into个变量赋值的时候select结果必须只有一行数据,如果多行会包too many row错误,空的话则会报空错误。

3.PL/SQL中最基本的语句块结构DECLARE声明变量,要使用的变量必须在这里声明BEGIN需要执行的程序语句EXCEPTION异常处理语句END二、PL/SQL 程序顺序结构(分支和循环)1.正常都是从上到下的顺序结构2.使用if进行分支处理IF 语句的格式:if condition_1 then statement_1; elsif condition_n then statement_n;else else_statements; endif;3.使用case进行分支处理CASE语句格式:1.单值比较: case expression when result_1 then statements_1;when result_2 then statements_2;elseelse_statement;endcase;2.多值比较:casewhen expression_1 then statement_1;when expression_2 then statement_2;elseelse_statements;endcase;4.使用循环结构1.使用loop循环结构:loop statements;exit when expression;end loop;满足expression条件的时候跳出循环;2.使用while循环结构:while expression loop statements;end loop;expression 的格式:vi<=10 不加分号3.使用for循环结构:for expression loop statements;end loop;expression 的格式:vi in 1..10 不叫分号三、游标基础及使用1.游标的定义:游标用于表示一查询结果的结果集2.游标使用四个步骤:---1.声明declare --- 2.打开open ----3.读取fetch ----4.关闭close1.声明游标:CURSOR cursor_name IS select_statements;例如:CURSOR cursor_student IS SELECT id,name,age,sex FROM students WHERE name LIKE '林%';2.使用游标是打开:Open cursor_name;例如:OPEN cursor_student;打开游标的时候系统才会去查询游标声明的数据集;3.读取数据:FETCH cursor_name INTO variable_name1,…variable_name2;例如:FETCH cursor_studnet INTO v_id,v_sname,v_age,v_sex;第一次读取的是第一行数据,再次使用FETCH读取数据的时候是下一行所以处理游标时一般都是用循环;4.关闭游标:CLOSE cursor_name;例如:CLOSE cursor_student;3.游标中的属性:四个常用属性:%ISOPEN 、%FOUND 、%NOTFOUND 、%ROWCOUNT1.%ISOPEN 返回游标是否打开使用方法cursor_name%ISOPEN例如:cursor_student%ISOPEN;2.%NOTFUND 返回最近一次FETCH取数是否有取到数,没取到返回true,有取到返回false;一般用于判断循环终止使用方法:cursor_name%NOTFUND例如:cursor_student%NOTFOUND3.%FOUND 与%NOTFOUND相反4.%ROWCOUNT 返回现在已经读取的行数使用方法:cursor_name%ROWCOUNT例如:cursor_student%ROWCOUNT4.简单使用游标循环读取数据的例子读取幵打印学生表中“计算机系学生的信息”DECLAREv_specialty students.specialty%type; --声明变量v_name %type;v_dob students.dob%type;CURSOR student_cur --声明游标ISSELECT name,dobFROM students WHERE specialty=v_specialty;BEGINv_specialty:='计算机'; --给变量赋值OPEN student_cur; --打开游标DBMES_OUTPUT.PUT_LINE('学生姓名出生日期'); --输出LOOPFETCH student_cur INTO v_name,v_dob; --读取游标中的数据EXIT WHEN student_cur%NOTFUND; --设定退出条件DBMS_OUTPUT.PUT_LINE(v_name||' '||v_dob); --输出结果END LOOP; --循环体结束标志CLOSE sutent_cur; --关闭游标END; --块结构结束标志5.游标的应用:1.对游标指定的数据进行修改:需要对游标指定的数据修改必须在声明游标的时候带有FOR UPDATE 关键字语法:CURSOR cursor_name IS select_statement FOR UPDATE OF table_name NOTWAIT;OF table_name 可以不写,用于自动选择多表的时候确定那些表需要锁定;NOTWAIT可以不写,用于确认是否等待锁。

plsql高级应用课堂笔记2

plsql高级应用课堂笔记2
BEGIN
OPEN mycur;/**打开游标,意味着 游标的结果集已经关闭了,准备取出结果集里面的数据**/
FETCH mycur INTO myrecord;/**取books表中的第一条数据放到myrecord记录变量中***/
WHILE mycur%FOUND LOOP /*bool类型 为真时,从第二条数据开始进行判断*/
当一条数据都没有取到时,found,notfound为假,当取到第一条数据之后,还有数据可以去取,found为真,notfound为假
注意:游标并非一个数据库对象,它是以声明的方式在内存中开辟的区域,游标的结果集:1.要处理的sql语句表中的结果集2.该结果集中对应数据的位置
显示游标没参数1:EG:
SELECT books_name FROM books WHERE books_id=id;
t_name books.books_name%TYPE;/*定义变量**/
BEGIN
OPEN cur_para('001');/**books表中的xt;
END LOOP;/**取完数据,结束循环*/
CLOSE cur;
END;
/
隐式游标(无需声明,打开,关闭)
sql>BEGIN
FOR cur IN(SELECT name FROM deptment) LOOP
SELECT books_name FROM books WHERE books_id=id;
BEGIN
DBMS_OUTPUT.PUT_LINE('******结果集为:*****');
FOR cur In cur_para('001') LOOP /**满足条件就循环,在for循环中计数器变量不需要事先声明,从游标的结果集里面获取数据放到计数器变量cur中,**/

plsql学习笔记

plsql学习笔记
when v_sal<1000 then update emp set comm=100 where ename=v_ename;
when v_sal<2000 then update emp set comm=80 where ename=v_ename;
when v_sal<6000 tehn update emp set comm=50 where ename=v_ename;
insert into dept (deptno,dname) values(v_deptno,v_dname);
2.2使用子查询插入数据
v_deptno emp.deptno%type:=&no;
insert into employee select * from emp where deptno=v_deptno;
使用的变量名不能与列名相同,否则触发TOO_MANY_ROWS例外.
2.操纵数据
2.1使用VALUES子句插入数据
v_deptno dept.deptno%type;
v_dname dept.dname%type;
v_deptno:=no;
v_dname:='&name';
begin
for i in reverse 1..10 loop
insert into temp values(i);
end loop;
end;
5.10嵌套循环和标号:通过在嵌套循环中使用标号,可以区分内层循环和外层循环,并且可以在内层循环中直接退出外层循环
dbms_output.put_line('修改了'||sql%rowcount||'行');

PLsql学习笔记

PLsql学习笔记

PL/SQL学习笔记PLSQL特有的%TYPE属性来声明与XX类型一致的变量类型:举例:...v_st_name%TYPE;v_min_balancev_balance%TYPE:= 10;...可绑定变量(Bind Variable 也称为Host Variable , 非PLSQL 变量):可绑定变量是一种在缩主环境中定义的变量,所谓缩主环境一般指示SQLPLUS执行环境或者是PLSQL Developer 的Command Window执行环境;可绑定变量可用于在运行时把值传递给PLSQL, 创建语法:V ARIABLE return_codeNUMBERV ARIABLE return_msgV ARCHAR2(30)大家注意,在标准的PLSQL中定义变量是不能用V ARIABLE关键字的,此关键字只在SQLPLUS执行环境中有效,可使用PRINT语句输出变量内容。

在PLSQL中使用这种变量时,前面加”:”, 以示区分。

SELECT INTO 语句:用于把从数据库查询出内容存入变量BEGININSERT INTO employees(employee_id, first_name, last_name, email,hire_date, job_id, salary)V ALUES(employees_seq.NEXTV AL, 'Ruth', 'Cores', 'RCORES',sysdate, 'AD_ASST', 4000);END;循环语句的语法与其他语言类似:有基本循环、For循环、Wihle循环三种LOOPstatement1;. . .EXIT [WHEN condition];END LOOP;WHILE condition LOOPstatement1;statement2;. . .END LOOP;FOR counter IN [REVERSE]lower_bound..upper_bound LOOPstatement1;statement2;. . .END LOOP;概述:PLSQL中常用的自定义类型就两种:记录类型、PLSQL内存表类型(根据表中的数据字段的简单和复杂程度又可分别实现类似于简单数组和记录数组的功能)记录类型的定义语法:TYPE type_name IS RECORD(field_declaration[, field_declaration]…);identifiertype_name;这里的field_declaration 的具体格式可以是:field_name {field_type | variable%TYPE| table.column%TYPE | table%ROWTYPE}[[NOT NULL] {:= | DEFAULT} expr]%ROWTYPE属性:在PLSQL中%ROWTYPE 表示某张表的记录类型或者是用户指定以的记录类型,使用此属性可以很方便的定义一个变量,其类型与某张表的记录或者自定义的记录类型保持一致。

PLSQL基础教程-红色部分为笔记

PLSQL基础教程-红色部分为笔记

PL/SQL程序设计目录第一章PL/SQL 程序设计简介 (4)§1.2SQL与PL/SQL (4)§1.2.1 什么是PL/SQL? (4)§1.2.1 PL/SQL的好处 (4)§1.2.2 PL/SQL 可用的SQL语句 (5)§1.3运行PL/SQL程序 (5)第二章PL/SQL块结构和组成元素 (6)§2.1PL/SQL块 (6)§2.2PL/SQL结构 (6)§2.3标识符 (6)§2.4PL/SQL变量类型 (7)§2.4.1 变量类型 (7)§2.4.2 复合类型 (9)§2.4.3 使用%ROWTYPE (11)§2.4.4 LOB类型* (11)§2.4.5 Bind 变量 (11)§2.4.6 INDEX BY TABLES (12)§2.4.7 数据类型的转换* (13)§2.5运算符和表达式(数据定义) (13)§2.5.1 关系运算符 (13)§2.5.2 一般运算符 (13)§2.5.3 逻辑运算符 (14)§2.6变量赋值 (14)§2.6.1 字符及数字运算特点 (14)§2.6.2 BOOLEAN 赋值 (14)§2.6.3 数据库赋值 (14)§2.6.4 可转换的类型赋值 (15)§2.7变量作用范围及可见性 (15)§2.8注释 (16)§2.9简单例子 (17)§2.9.1 简单数据插入例子 (17)§2.9.2 简单数据删除例子 (17)第三章PL/SQL流程控制语句 (18)§3.1条件语句 (18)§3.2CASE表达式 (19)§3.3循环 (19)§3.3标号和GOTO (21)§3.4NULL语句 (21)第四章游标的使用 (23)§4.1游标概念 (23)§4.1.1 处理显式游标 (23)§4.1.2 处理隐式游标 (26)§4.1.3 游标修改和删除操作 (27)第五章异常错误处理 (29)§5.1异常处理概念 (29)§5.1.1 预定义的异常处理 (29)§5.1.2 非预定义的异常处理 (30)§5.1.3 用户自定义的异常处理 (31)§5.1.4 用户定义的异常处理 (32)§5.2异常错误传播 (33)§5.2.1 在执行部分引发异常错误 (33)§5.2.2 在声明部分引发异常错误 (34)§5.3异常错误处理编程 (34)§5.4在PL/SQL中使用SQLCODE,SQLERRM (35)第六章存储函数和过程 (36)§6.1引言 (36)§6.2创建函数 (36)§6.3存储过程 (39)§6.3.1 创建过程 (39)§6.3.2 调用存储过程 (40)§6.3.3 开发存储过程步骤 (42)§6.3.4 与过程相关数据字典 (43)第七章包的创建和应用 (44)§7.1引言 (44)§7.2包的定义 (44)§7.3包的开发步骤 (45)§7.4包定义的说明 (45)§7.5子程序重载 (48)§7.6删除过程、函数和包 (50)§7.7包的管理 (50)第八章触发器 (51)§8.1触发器类型 (51)§8.1.1 DML触发器 (51)§8.1.2 替代触发器 (51)§8.1.3 系统触发器 (51)§8.2创建触发器 (51)§8.2.1 触发器触发次序 (53)§8.2.2 创建DML触发器 (53)§8.2.3 创建替代(Instead_of)触发器 (54)§8.2.3 创建系统事件触发器 (54)§8.2.4 系统触发器事件属性 (55)§8.2.5 使用触发器谓词 (56)§8.2.6 重新编译触发器 (56)§8.3删除和使能触发器 (56)§8.4触发器和数据字典 (57)§8.5数据库触发器的应用举例 (57)第一章PL/SQL 程序设计简介PL /SQL是一种高级数据库程序设计语言,该语言专门用于在各种环境下对ORACLE数据库进行访问。

PLSQL学习笔记

PLSQL学习笔记

(五)权限控制语句(DCL):GRANT 授予权限 /REVOKE 移除权限
SELECT:
SELECT 查询列表 FROM 数据源;
*&* SQL命令必须加分号。
ALTER USER HR IDENTIFIED BY HR ACCOUNT UNLOCK;
修改用户 解锁
给HR解锁
主要用于通配固定位数的字符。例如查询月收入五位数以上的员工。五位ห้องสมุดไป่ตู้可以用'_'来查询。
逻辑操作符(用在WHERE子句中)
AND
OR
NOT
先执行 NOT ,再执行 AND 最后执行 OR。
ORDER BY
ORDER BY子句在 SELECT 语句的最后。
ASC:升序
(三)事务控制语句:COMMIT 提交、ROLLBACK 回滚、
SAVEPOINT 存储点(与 ROLLBACK 搭配使用)在回滚的时候可以回滚到某个存储点上。否则回滚到最初起点上。
(四)数据定义语句:对对象操作。TRUNCATE 清除表中所有数据 /CREATE 创建 /DROP 删除 /ALTER 修改
定义空(NULL)值
空值出现在表达式中会导致整个表达式的值为空。
NVL(字段名,将要赋予的值)函数
作用:将空值转换成其他有ASCLL码的值。
annual_salary年薪
别名
可以加中文的字段别名。
如果想强制地改变列名的大小写,可以在别名的定义时加上双引号,列名有空格时也要在列名上加双引号。
以上函数都是返回string的一部分,从字符位置A开始,长为B个字符。如果A是0,那它就被认为是1(字符串的开始位置)。如果A是正数,那么字符从左边开始数。如果是负数,则从STRING的末尾开始,从右边数。如果B不存在,那么缺省是整个字符串。如果B小于1,将返回NULL。如果A或B使用了浮点数,那么该数值首先被节取成一个整数,返回类型与STRING相同。

PLSQL笔记

PLSQL笔记

PLSQL笔记PL/SQL编辑器,具有语法加强、SQL和PL/SQL帮助、对象描述、代码助手、编译器提示、PL/SQL完善、代码内容、代码分级、浏览器按钮、超链接导航、宏库等许多智能特性,能够满足要求性最高的用户需求。

当您需要某个信息时,它将自动出现,至多单击即可将信息调出。

一、简介1、PLSQL Developer是一个为Oracle数据库开发存储程序单元的集成开发环境,你能方便的创建你的客户/服务器应用程序的服务器部分。

2、PL/SQL可以做的事:1)使用文本编辑器写程序单元(过程、触发器等)。

2)使用Oracle SQL*PLUS编译源文件3)如果有编译错误,你必须找出它位于源文件何处,纠正它,转回到SQL*PLUS重新编译它,然后再找下一处错误。

4)使用SQL*PLUS或你的客户端应用程序测试程序单元。

5)如果发生运行时间错误,你又要很辛苦地定位问题的原因并纠正错误。

6)使用解释计划工具或tkprof工具优化你的SQL语句。

7)使用SQL*plus或另外的工具在你的数据库里查看或修改其它对象和数据。

3、工具PL/SQL Developer提供了几个能对开发有帮助的工具,这些工具包括允许你在数据库对象源搜索文本的查找数据库对象工具、快速编译在开发期间已经变得无效的对象的编译无效对象工具、导出和导入工具、创建测试数据的数据生成器工具、导出用户对象DDL语句的导出用户对象工具、比较两个用户对象定义的比较用户对象工具、会话信息工具、事件监视器和一个比较并使表内容相同的比较表数据工具。

除了这些标准工具外,你还可以定义你自己的工具,并把他们包括在PL/SQL Developer的工具菜单里面。

4、工程要组织你的工作,你可以使用PL/SQL Developer的工程概念,工程由很多文件和数据库对象组成,这些对象通过工程项目窗口很容易被建成,并且通过单击鼠标就能被编译。

5、图形图形窗口可以运行于SQL窗口或报告窗口的内部,以获得查询数据的图示。

PLSQL开发报表入门

PLSQL开发报表入门
into p_row; EXIT WHEN cur_emp%NOTFOUND OR cur_emp%NOTFOUND IS NULL; print(p_row.id || ',' || p_row.employee_name || ',' || p_row.e_mail || ',' ||p_row.tel); end loop; close cur_emp; END main; -----------------------入口主函数结 束--------------end cux_emp_info_rep;
其中 fnd_file 包是 EBS 自带的。
上传 package 文件到应用 比如我们这里上传到
可以不用上传,在数据库中 编译后即可
/u01/VIS01/apps/apps_st/appl/cux/12.0.0/reports/ZHS
定义(并发)可执行 定义(并发)程序 定义参数:
添加并发程序到请求组 (请求组分配给责任,责任分配给用户)
运行请求Biblioteka 执行结果根据请求编号查找报表输出文件位置
select t.logfile_name,t.outfile_name from fnd_concurrent_requests t where t.request_id = 5877103;
cursor cur_emp(dno number) is
select employee_id as id,
last_name as employee_name,
em ail
as e_mail,
phone_number as tel
from employees
where department_id =dno order by employee_id; -----------------输出函数-------------------------- Author : XQQ -- Created : 2011/4/9 10:54:16 -- Purpose : 在控制台输出和在报表中输出 procedure print(content varchar2) is begin dbmsouttput.put_line(content);--控制台输出 fnd_file.put_line(FND_FILE.OUTPUT, content);--报表中输出 end print; ----------------------入口函数---------------------传入一个参数:部门编号 procedure main(errbuf OUT VARCHAR2, retcode OUT NUMBER, p_no in number) is --局部变量-p_row cur_emp%rowtype; begin open cur_emp(p_no); loop --循环 fetch cur_emp

plsql笔记

plsql笔记
例子:
declare
type v_table is table of integer index by binary_integer;
v_integers v_table;
user1 v_user;
user2 v_user; ------ User user1;
user3 v_user;
v_users v_map; ---- Map<Integer,User> v_users;
begin
v_integers(1):=1;
v_integers(2):=2;
v_integers(4):=4;
dbms_output.put_line(v_integers(1)||' , '||v_integers(2)||' , '||v_integers(3));
分支
if boolean then xxx end if;
例子:
declare
v_num integer:=5;
begin
if v_num=5
then dbms_output.put_line(v_num);
end if;
end;
if boolean then xxx else xxxx end if;
end;
5、复合类型
1、记录类型 record----类似java 的 类 c语言的结构体
声明: type v_record is record(
v_username varchar2(50),
end;
7、%rowtype
declare
v_row users%rowtype;

PLSQL报表开发流程学习笔记

PLSQL报表开发流程学习笔记
Transitional//EN"> <html xmlns="/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <style type="text/css"> <!-#Layer1 {
PLSQL 报表开发学习笔记
一、 在 PL/SQL Developer 中创建一个 package。 1、 打开 PL/SQL Developer 连接到 09 号服务器上。 2、 Username:apps Password:apps Database: ORACLE_EBS_SERVER_09 Connect as: Normal 【注】:这里的 Database 是在“\DevSuiteHome\NETWORK\ADMIN\tnsnames.ora”设置 的名称。
<td width="180" bgcolor="#999999"><span class="STYLE4">编 号</span></td>
<td width="358" bgcolor="#999999"><span class="STYLE4">描 述</span></td>
</tr>'); --格式控制部分 loop --循环 fetch cursor_user_role into p_row_cursor_user_role; EXIT WHEN cursor_user_role%NOTFOUND OR

PLSQL笔记

PLSQL笔记

PLSQL笔记PLSQL开发笔记和小结*****************************************PLSQL基本结构*****************************************基本数据类型变量1. 基本数据类型Number 数字型Int 整数型Pls_integer 整数型,产生溢出时出现错误Binary_integer 整数型,表示带符号的整数Char 定长字符型,最大255个字符Varchar2 变长字符型,最大2000个字符Long 变长字符型,最长2GBDate 日期型Boolean 布尔型(TRUE、FALSE、NULL三者取一)在PL/SQL中使用的数据类型和Oracle数据库中使用的数据类型,有的含义是完全一致的,有的是有不同的含义的。

2. 基本数据类型变量的定义方法变量名类型标识符 [not null]:=值;declareage number(3):=26; --长度为3,初始值为26begincommit;end;其中,定义常量的语法格式:常量名 constant 类型标识符 [not null]:=值;declarepi constant number(9):=3.1415926;--为pi的数字型常量,长度为9,初始值为3.1415926 begincommit;end;表达式变量、常量经常需要组成各种表达式来进行运算,下面介绍在PL/SQL中常见表达式的运算规则。

1. 数值表达式PL/SQL程序中的数值表达式是由数值型常数、变量、函数和算术运算符组成的,可以使用的算术运算符包括+(加法)、-(减法)、*(乘法)、/(除法)和**(乘方)等。

命令窗口中执行下列PL/SQL程序,该程序定义了名为result的整数型变量,计算的是10+3*4-20+5**2的值,理论结果应该是27。

―――――――――――――――――――――――――――――――――――――set serveroutput onDeclareresult integer;beginresult:=10+3*4-20+5**2;dbms_output.put_line('运算结果是:'||to_char(result));end;―――――――――――――――――――――――――――――――――――――dbms_output.put_line函数输出只能是字符串,因此利用to_char函数将数值型结果转换为字符型。

PLSQL使用学习笔记

PLSQL使用学习笔记

一、创建表空间1、使用system用户,登陆全局数据库orcl2、打开SQL Window3、输入表空间生成代码createtablespace ANTI_ESCAPEdatafile'D:\ProgramFiles\Oracle\oradata\orcl\ANTI_ESCAPE__TBSPACE.dbf' size 100M autoextend on next 50M maxsize unlimited;4、执行成功后,可在Tablespaces文件夹下,找到新生成的表空间二、创建用户1、找到Users文件夹2、右键新建用户3、在弹出的“创建用户”窗口中,输入新用户的名称、口令,默认表空间、临时表空间等用户只有在指定了表空间后,才能访问指定的表空间,其他的表空间,是不能访问的。

这跟mysql不一样。

4、赋予新用户权限,赋予其角色权限:connect、resource,这样用户才能登录操作数据库通常会分配给用户DBA权限,拥有DBA角色的用户几乎可以做任何事情了。

三、用新建用户登录四、执行SQL,导入Tables1、新建Command Window2、在Editor中Load脚本文件五、导出1、Export tables(数据)PL/SQL Developer 导出表数据打开PL/SQL Developer,登录选择菜单,工具->导出用户表有三种导出方式附录:Oracle Export,Sql Insert,pl/sql developer第一种是导出为.dmp的文件格式,.dmp文件是二进制的,可以跨平台,还能包含权限,效率也很不错,用得最广第二种是导出为.sql文件的,可用文本编辑器查看,通用性比较好,但效率不如第一种,适合小数据量导入导出。

尤其注意的是表中不能有大字段(blob,clob,long),如果有,会提示不能导出(提示如下:table contains one or more LONG columns cannot export in sqlformat,user Pl/sql developer format instead),可以用第一种和第三种方式导出。

PLSQL编程笔记

PLSQL编程笔记
v_content varchar(512);
begin
v_ival := v_ival * 90; --赋值运算
insert into syslogs values(seq_syslogs.nextval,10,sysdate,'v_ival='||v_ival,user);--数据库存储
/**********************************《PL/SQL编程》*************************************/
/*procedural language/sql*/
--1、过程、函数、触发器是pl/sql编写的
--命令规则:
--变量(variable) v_
--常量(constant) c_
--指针、游标(cursor) _cursor
--例外、异常(exception) e_
--可定义的变量和常量:
--标量类型:scalar
--delete syslogs where logid=15;
--分支流程控制
if v_ival>50 then
dbms_output.put_line('日志需要清理了~');
else
dbms_output.put_line('日志空间正常!');
end loop;
--For循环
for v_count in reverse 0..4 loop --reverse递减
dbms_output.put_line('for循环:'||v_count);
end loop;

plsql笔记

plsql笔记

plsql笔记1.声明部分:主要⽤于声明变量、常量、数据类型、游标、异常处理名称以及本地(局部)⼦程序定义等。

2.可执⾏部分执⾏部分:是PL/SQL块的功能实现部分。

该部分通过变量赋值、流程控制、数据查询、数据操纵、数据定义、事务控制、游标处理等实现块的功能。

3.异常处理部分:异常处理部分⽤于处理该块执⾏过程中产⽣的异常。

执⾏部分是必须的,⽽声明部分和异常部分是可选的;PL/SQL的字符集包括:⼤⼩写字母:A~Z,a~z数字:0~9空⽩:制表符、空格和回车数字符号:+ - * / 〈〉 =标点符号:~ ! @ # $ % ^&* ()_ | { } [ ] ?;:, . “ ‘1.1标识符⽤于定义PL/SQL变量、常量、异常、游标名称、游标变量、参数、⼦程序名称和其他的程序单元名称等。

1.2在PL/SQL程序中,标识符是以字母开头的,后边可以跟字母、数字、美元符号($)、井号(#)或下划线(_),其最⼤长度为30个字符,并且所有字符都是有效的。

数字类型字符类型⽇期/区间类型⾏标识类型布尔类型原始类型LOB类型引⽤类型记录类型集合类型%TYPE与%ROWTYPE分类数据类型数字类型 NUMBER、BINARY_NUMBER PLS_NUMBER字符类型 VARCHAR2、CHAR、LONG、NCHAR、NVARCHAR⽇期/区间类型 DATE、TIMESTAMP、INTERVAL⾏标识类型 ROWID、UROWID布尔类型 BOOLEAN(TRUE、FALSE、NULL)原始类型 RAW、LONG RAWLOB类型 CLOB、BLOB、NCLOB、BFILE引⽤类型 REF CURSOR,REF object_type。

记录类型 RECORD集合类型 TABLE、VARRAY变量定义的⼀般格式variable_name [CONSTANT] datatype [NOT NULL] [DEFAULT|:=expression];说明1.1变量或常量名称是⼀个PL/SQL标识符,应符合标识符命名规范;1.2每⾏只能定义⼀个变量;1.3如果加上关键字CONSTANT,则表⽰所定义的是⼀个常量,必须为它赋初值;1.4如果定义变量时使⽤了NOT NULL关键字,则必须为变量赋初值;1.5如果变量没有赋初值,则默认为NULL;1.6使⽤DEFAULT或“:=”运算符为变量初始化。

PLSQL编程基础(个人笔记)

PLSQL编程基础(个人笔记)

∙声明变量语法:变量名[CONSTANT] databyte [NOT NULL][:=|DEFAULT expression]∙赋值:o常量:常量名CONSTANT NUMBER := 0;(定义一个数值型,值为0的常量)o变量:▪直接赋值x:=200;▪通过SQL SELECT INTO 或FETCH INTO给变量赋值∙数据类型:o numbero charactero date/timeo boolean∙操作符:o算术操作符:+、-、*、/、**(乘方)o关系操作符:<、<=、>、>=、=、!=、<>、:=o比较操作符:is null、between、like、ino逻辑操作符:and、or、not∙流程控制:o条件控制:▪if...then...end if;▪if...then...else...end if;▪if...elsif...else...then...end if;o循环控制:▪loop...end loop;▪while...loop...end loop;▪for...loop...end loop;(for counter in [reverse]--反序 start_rangeend_range loop...end loop)o循环语句可以配合exit或者exit when...使用∙标签:<<标签名>>,增加易读性,也可以配合goto语句使用∙PL/SQL嵌套块:begin...end被看作一个PL/SQL程序块,嵌套块要注意的是变量,定义在最外部程序块中的变量可以在所有子块中使用,如果在子块中定义了与外部程序块变量相同的变量名,在执行子块时将使用子块中定义的变量。

子块中定义的变量不能被父块引用。

∙异常处理:o抛出异常:▪通过PL/SQL运行时引擎▪使用RAISE语句▪使用RAISE_APPLICATION_ERROR存储过程o自定义异常示例:DECLAREinventory_too_low EXCEPTION; ---其他声明语句BEGIN…IF order_rec.qty>inventory_rec.qty THENRAISE inventory_too_low;END IF;…EXCEPTIONWHEN inventory_too_low THENorder_rec.staus:='backordered';…o异常处理:EXCEPTIONWHEN exception_name THENCode for handing exception_name[WHEN another_exception THENCode for handing another_exception][WHEN others THENCode for handing any other exception.]o异常传递:没有处理的异常将沿检测异常调用程序传播到外面,在异常部分抛出的异常将控制转到上一层的异常部分。

plsql编程学习(语法和实例)笔记

plsql编程学习(语法和实例)笔记

重点:序列,游标,触发器一、基本概念游标是用来循环处理查询得到的每一列数据的方法,类似于while循环,提供集合处理之外的顺序处理能力。

触发器是在对数据表进行insert delete update等操作时,强制执行的后台操作。

多用于业务逻辑检查,数据检查、生成等。

sequence等同于序列号,每次取的时候sequence会自动增加,一般会作用于需要按序列号排序的地方。

二、实例1)基本语法--最简单的语句块set serveroutput on; //用于输出显示begindbms_output.put_line('HeloWorld');end;--一个简单的PL/SQL语句块declare //声明变量,必须 v_ 开头v_name varchar2(20);beginv_name := 'myname'; //变量的赋值格式dbms_output.put_line(v_name);end;--语句块的组成declarev_num number := 0;beginv_num := 2/v_num;dbms_output.put_line(v_num);exception //如果没有这部分,当出现异常的时候,就执行过不去when others thendbms_output.put_line('error');end;--变量声明的规则1): 变量名不能够使用保留字,如from、select等2): 第一个字符必须是字母3): 变量名最多包含30个字符4): 不要与数据库的表或者列同名5): 每一行只能声明一个变量--常用变量类型1): binary_integer: 整数,主要用来计数而不是用来表示字段类型2): number: 数字类型3): char: 定长字符串4): varchar2: 变长字符串5): date: 日期6): long: 长字符串,最长2GB7): boolean: 布尔类型,可以取值为 true、false和null--变量声明,可以使用 %type 属性declarev_empno number(4);v_empno2 emp.empno%type;//表示该变量的类型和emp表中的empno字段保持一致。

PLSQL学习笔记

PLSQL学习笔记
...
END LOOP;
3) FOR loop_counter IN [REVERSE] low_bound..high_bound LOOP
...
END LOOP;
注:a. 加上REVERSE 表示递减,从结束边界到起始边界,递减步长为一;
arg_name[{IN|OUT|IN OUT}]TYPE)]
{IS|AS}
procedure_body
1) IN: 表示该参数不能被赋值(只能位于等号右边);
2) 声明:a. 普通申明:DELCARE CURSOR CURSOR_NAME IS select_statement /* CURSOR的内容必须是一条查询语句*/
b. 带参数申明:DELCARE CURSOR c_stu(p_id student.ID%TYPE) SELECT * FROM student WHERE ID = p_id;
注:与3中定一个record相比,一步就完成,而3中定义分二步:a. 所有的成员变量都要申明; b. 实例化变量;
5. TABLE类型
答:TYPE tabletype IS TABLE OF type INDEX BY BINARY_INTEGER;
例:DECLARE
TYPE t_StuTable IS TABLE OF Student%ROWTYPE INDEX BY BINARY_INTERGER;
4) SQLJ: 很新的一种用Java访问Oracle数据库的方法,会的人不多;
5) JDBC
6) PL/SQL: 存储在数据内运行, 其他方法为在数据库外对数据库访问;
2. PL/SQL
答:1) PL/SQL(Procedual language/SQL)是在标准SQL的基础上增加了过程化处理的语言;

OraclePLSQL学习笔记(块、控制结构、过程、函数、包)

OraclePLSQL学习笔记(块、控制结构、过程、函数、包)

OraclePLSQL学习笔记(块、控制结构、过程、函数、包)Oracle PL/SQL 学习笔记⼀、PL/SQL 块块定义语法:DECLARE/*定义部分——定义常量、变量、复杂数据类型、游标*/BEGIN/*执⾏部分——PL/SQL语句和SQL语句*/EXCEPTION/*异常处理部分——处理运⾏错误*/END;注:PL/SQL中结束输⼊使⽤‘/’字符dbms_output.put_line(“输出的字符串内容”);dbms_output是提供的系统包;put_line 是该包中的过程,⽤于输出字符串信息。

当使⽤dbms_output包时必须要先激活服务器输出激活服务器输出语句: set serveroutput on⽰例:DECLAREstr varchar(5) --变量的定义BEGINSelect name INTO str FROM emp --INTO是将name的值赋值给strwhere empno=$no; --$no是替代变量EXCEPTIONWhen NO_DATA_FOUND then --PL/SQL预定义的异常类型dbms_output.put_line(“输出的字符串内容”);END;变量定义语法:变量名 [CONSTANT] 数据类型 [NOT NULL] [:=|DEFAULT 默认值或函数]--CONSTANT表⽰常量;--:=设置默认值%TYPE属性⽰例:Name emp.ename%TYPE --name与emp表中ename列的类型和长度相同Sex Name%TYPE --sex与name类型和长度相同%ROWTYPE属性语法:变量名表名%ROWTYPE⽰例:Str T1%ROWTYPE--str变量对应T1表中所有列,并且该表中的所有列的类型与长度相同PL/SQL中使⽤的操作符:= --赋值操作符=> --关联操作符|| --连接操作符PL/SQL游标游标定义语法:CURSOR 游标名 IS SQL语句游标名%ISOPEN 判断游标是否已经打开游标名%FOUND SQL语句有作⽤⾏市,其属性值为TRUE;游标名%NOTFOUND SQL语句没有作⽤⾏市,其属性值为TRUE;游标名%ROWCOUNT 返回SQL语句所作⽤的总⾏数注:游标名默认为‘SQL’⼆、 PL/SQL控制语句1、分⽀语句IF 条件 THEN 执⾏操作ELSEIF 条件THEN 执⾏操作ELSE 执⾏操作END IF;2、多重分⽀语句CASE 表达式WHEN 要判断的值 THEN 执⾏操作WHEN 要判断的值 THEN 执⾏操作ELSE 执⾏操作END CASE;3、循环语句⼀WHILE 条件 LOOP执⾏操作···END LOOP;4、循环语句⼆FOR 变量 IN [REVERSE] 起点值 ..终点值 LOOP执⾏操作END LOOP;注:REVERSE表⽰由终点值到起点值循环; ..是固定格式;三、存储过程创建过程语法:create [or replace] procedure procedure_name [ (argment [ { in| in out }] type, argment [ { in | out | in out } ] type { is | as } <类型.变量的说明> ( 注: 不⽤ declare 语句 ) Begin <执⾏部分> exception <可选的异常处理说明> end; l 这⾥的IN表⽰向存储过程传递参数,OUT表⽰从存储过程返回参数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

END print;
PROCEDURE do(errbuf OUT VARCHAR2,retcod OUT NUMBER) is p_row_cursor_user_role cursor_user_role%rowtype;
BEGIN open cursor_user_role; --格式控制部分 print('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN"> <html xmlns="/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <style type="text/css"> <!-#Layer1 {
新建一个“程序”,找到我们上术创建的程序。 三、 提交请求,查看结果。
1、 现在切换到“总帐管理员”职责下。 2、 提交一个新的请求。
3、 在请求的名称中找到我们上术创建的程序。
4、 点提交。 5、 选择所有个人请求。点查找。
好,我们的请求成功执行了,现在点击查看输出。 6、 在查看输出。
成功输出了。Ok!
<td width="180" bgcolor="#999999"><span class="STYLE4">编 号</span></td>
<td width="358" bgcolor="#999999"><span class="STYLE4">描 述</span></td>
</tr>'); --格式控制部分 loop --循环 fetch cursor_user_role into p_row_cursor_user_role; EXIT WHEN cursor_user_role%NOTFOUND OR
PLSQL 报表开发学习笔记
一、 在 PL/SQL Developer 中创建一个 package。 1、 打开 PL/SQL Developer 连接到 09 号服务器上。 2、 Username:apps Password:apps Database: ORACLE_EBS_SERVER_09 Connect as: Normal 【注】:这里的 Database 是在“\DevSuiteHome\NETWORK\ADMIN\tnsnames.ora”设置 的名称。
CURSOR cursor_user_role is
SELECT a.post_date
er_name
b.id
b.content
FROomment b
WHERE a.id = b.post_id
ORDER BY a.post_date;
as test_date, as test_name, as test_comment_id, as test_content
<tr> <th colspan="4" scope="col">测试数据信息</th>
</tr> <tr>
<td width="314" bgcolor="#999999"><span class="STYLE4">日 期</span></td>
<td width="95" bgcolor="#999999"><span class="STYLE4">姓名 </span></td>
'</td>'|| '<td>' ||p_row_cursor_user_role.test_content ||
'</td> </tr>'); --输出部分--End-END loop; --格式控制部分 print('</table>
</body> </html>');
--格式控制部分
close cursor_user_role; END do; end cux_caetest01_report; 二、 在 Oracle EBS 中注册挂载。 1、 登录 Oracle EBS R12 系统。选择“系统管理员 并发 方案 可执行”。 2、 填入 可执行名称:test_caesar01_report 简称:test_caesar01_report 应用产品:总帐管理系统 执行方法:PL/SQL 存储过程 执行文件名:cux_caetest01_report 【注】:执行文件名要和我们上述创建的 package 名称一致。
-- Function and procedure implementations PROCEDURE print(content VARCHAR2) is BEGIN
dbms_output.put_line(content); fnd_file.PUT_LINE(fnd_file.output,content);
3、 保存关闭。 4、 选择“并发 方案 定义”。
5、 保存关闭。 6、 挂到 Request Group。到“安全性 责任 定义”中查找“General Ledger, Vision
Operations (USA)”对应的请求组。
在“安全性 责任 请求”中输入刚才找的请求组“GL Concurrent Program Group”
3、新建一个 Package.
4、输入 Package Name 和 Purpose。
5、生成如下的包头和包体。 6、包头部分定义一个过程:
procedure do(errbuf OUT VARCHAR2, retcod OUT NUMBER); 7、包体部分包括:
create or replace package body cux_caetest01_report is
position:absolute; width:339px; height:152px; z-index:1; left: 10px; top: 12px; }
.STYLE4 {font-size: 24px} --> </style> </head>
<body> <table width="975" border="1" bordercolor="#666666">
cursor_user_role%NOTFOUND IS NULL; --输出部分--Start-print('<tr> <td>' || p_row_cursor_user_role.test_date ||
'</td>'|| '<td>' ||
replace(p_row_cursor_user_role.test_name,',','' )||'</td>'|| '<td>' || p_row_cursor_user_role.test_comment_id ||
相关文档
最新文档