`
leoizumi
  • 浏览: 93019 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

plsql小笔记

SQL 
阅读更多

create function sp_fun2(spName varchar2) return number is 
yearSal number(7,2);
begin
select sal*12 into yearSal from emp where ename=spName;
return yearSal;
end;

--创建一个包头

create package sp_package is
procedure update_sal(name varchar2,newsal number);
function annual_income(name varchar2) return number;
end;

--创建一个包体

create or replace package body sp_package is
procedure update_sal(name varchar2,newSal number) is
begin
update emp set sal=newSal where ename=name;
end;
function annual_income(name varchar2) return number is
annual_salary number;
begin
select sal*12 into annual_salary from emp where ename=name;
return annual_salary;
end;
end;

--变量1
declare
c_tax_rate number(3,2):=0.03;

--变量2
v_ename varchar2(5);
v_sal number(7,2);
v_tax_sal number(7,2);
begin
--执行
select ename,sal into v_ename,v_sal from emp where empno=&no;
--计算所得税
v_tax_sal:=v_sal*c_tax_rate;
--输出
dbms_output.put_line('姓名是:'||v_ename||' 工资:'||v_sal||'  缴税:'||v_tax_sal);
end;

--定义游标
declare
--定义一个游标类型
type sp_emp_cursor is ref cursor;
--定义一个游标变量
test_cursor sp_emp_cursor;
v_ename emp.ename%type;
v_sal emp.sal%type;
begin
open test_cursor for select ename,sal from emp where deptno=&no;
loop
fetch test_cursor into v_ename,v_sal;
exit when test_cursor%notfound;
dbms_output.put_line('名字:'||v_ename ||' 工资:'||v_sal );
end loop;
end;

--控制语句
create or replace procedure sp_pro6(spName varchar2) is
v_sal emp.sal%type;
begin
select sal into v_sal from emp where ename=spName;
if v_sal<1000 then
update emp set sal=sal+sal*10 where ename=spName;
end if;
end;


--循环自增
create or replace procedure sp_pro7(spName varchar2) is
v_num number:=1;
begin
loop
  insert into users values(v_num,spName);
  exit when v_num=10;
  v_num:=v_num+1;
end loop;
end;


--分页

--1)创建一个表
create table book(bookId number,bookName varchar2(50),publicHouse varchar2(50));

--2)编写存储过程
create or replace procedure sp_pro8(spBookId in number,spbookName in varchar2,sppublicHouse in varchar2) is
begin
insert into book values(spBookId,spbookName,sppublicHouse);
end;


--案例:有输出和输入的存储过程
create or replace procedure sp_pro9(spno in number,spName out varchar2) is
begin
select ename into spName from emp where empno=spno;
end;

--案例2:有输出和输入的存储过程(非结果集)
create or replace procedure sp_pro10(spno in number,spName out varchar2,spSal out number,spJob out varchar2) is
begin
select ename,sal,job into spName,spSal,spJob from emp where empno=spno;
end;


--有返回值的存储过程(结果集)
--1)建立一个包
create or replace package testpackage AS TYPE test_cursor is ref cursor;
end testpackage;

--2)建立存储过程
create or replace procedure sp_pro11(spNo in number,p_cursor out testpackage.test_cursor) is
begin
  open p_cursor for select * from emp where deptno=spNo;
end;

--3)在java中调用

---4)
  select t1.*,rownum rn from (select * from emp)t1 where rownum<=10;

select * from (select t1.*,rownum rn from (select * from emp)t1 where rownum<=10) where rn>=6;



--开始编写分页的过程


create or replace procedure fenye(tableName in varchar2,
myPageSize in number,
myPageNo in number,
myrows out number,
myPageCount out number,
p_cursor out testpackage.test_cursor) is
--定义
v_sql varchar2(1000);
--定义两个整数
v_begin number:=(myPageNo-1)*myPageSize+1;
v_end number:=myPageNo*myPageSize;
begin
--执行部分
v_sql:='select * from (select t1.*,rownum rn from (select * from '|| tableName ||' )t1 where rownum<='||v_end||') where rn>='||v_begin;
--打开游标(和sql关联)
open p_cursor for v_sql;
--计算
v_sql:='select count(*) from '||tableName;
execute immediate v_sql into myrows;
if mod(myrows,myPageSize)=0 then
myPageCount:=myrows/myPageSize;
else
myPageCount:=myrows/myPageSize+1;
end if;
--关闭游标
--close p_cursor;
end;
















 
分享到:
评论

相关推荐

    PLSQL学习笔记(1-7)

    本学习笔记涵盖了从基础到进阶的PLSQL知识,旨在帮助读者全面理解和掌握这一强大的数据库编程工具。 1. **基础概念** - **PL/SQL块**:PLSQL程序的基本结构是块,包括声明部分、执行部分和异常处理部分。 - **...

    PLSQL上课笔记

    PLSQL上课笔记和版书

    Oracle9iSQL/PLSQL学习笔记

    Oracle9i SQL/PLSQL 学习笔记 自己照着书学习时候的笔记。TXT的,比较简单,希望对大家学习有帮助。 其中0 mysqlCmd.txt是我自学mysql时候的笔记,是有关于命令的。大家看看有帮助没有。 都比较精华和简单,适合...

    PLSQL 学习笔记

    【PLSQL学习笔记】 PLSQL(Procedural Language/Structured Query Language)是Oracle数据库系统中的一个强大编程语言,它结合了SQL的查询能力与过程式编程语言的特点,为数据库开发提供了丰富的功能。这篇学习笔记...

    PLSQL笔记.doc

    PL/SQL是一种用于Oracle数据库的结构化查询语言扩展,它结合了SQL的数据操作功能和过程编程语言的控制结构。以下是对标题和描述中提到的PL/SQL知识点的详细解释: 1. **数据检索**: - **单行数据检索**:可以使用...

    转:PLSQL开发笔记和小结

    这篇"PLSQL开发笔记和小结"可能涵盖了许多关于PLSQL的基础知识和高级技巧,虽然具体的内容无法在此提供,但我们可以根据常规的PLSQL学习路线来探讨一些关键知识点: 1. **基本语法**:PLSQL由声明部分、执行部分和...

    PLSQL开发笔记和小结.doc

    ### PLSQL开发笔记和小结 #### PLSQL基本结构 ##### 基本数据类型变量 在PL/SQL中,为了有效地处理数据,提供了一系列基本数据类型,这些类型大致可以分为数字类型、字符类型和日期类型。 - **Number数字型**:...

    oracle plsql编程学习笔记

    ### Oracle PL/SQL编程核心知识点解析 #### 一、创建基本表与操作 在Oracle数据库中,使用PL/SQL进行数据库编程前,首先需掌握如何创建表与进行基本的CRUD(创建、读取、更新、删除)操作。示例中的`CREATE TABLE`...

    oracle plsql课堂笔记

    ```plsql DECLARE v_name VARCHAR2(64) := 'jack'; BEGIN NULL; -- 这里使用NULL作为占位符,不执行任何操作 DBMS_OUTPUT.PUT_LINE(v_name); -- 输出变量值 END; ``` - **分析**:这个例子展示了如何声明一个变量...

    sql和plsql学习笔记

    这些笔记涵盖了SQL和PL/SQL的基础知识,适合初学者了解和掌握数据库操作的基本概念和语法。随着经验的积累,开发者可以深入学习高级特性和最佳实践,如性能优化、并发控制、数据库设计等,以提升在Oracle数据库环境...

    plsql学习笔记整理.docx

    PL/SQL 学习笔记总结 PL/SQL 是 Oracle 在标准 SQL 语言上的扩展,提供了更多的编程功能,例如定义变量和常量、使用条件语句和循环语句、例外处理等。使用 PL/SQL 可以提高开发效率和数据库性能。 PL/SQL 的优点 ...

    plsql的 课堂 笔记

    plsql 课堂笔记 ,需要的 人可供参考之用

    Oracle SQL & PLSQL学习笔记

    Oracle SQL 和 PL/SQL 是两种在 Oracle 数据库管理系统中广泛使用的语言,用于管理和操作数据库。SQL,即结构化查询语言,主要分为三个类别:DML(数据操纵语言)、DDL(数据定义语言)和 DCL(数据控制语言)。...

    PLSQL学习笔记

    在本篇"PLSQL学习笔记"中,我们将深入探讨这一强大的数据库编程工具,主要涵盖以下几个核心知识点: 一、PL/SQL简介 1.1 什么是PL/SQL PL/SQL是Procedural Language/SQL的缩写,由Oracle公司开发,它扩展了SQL的...

    达内的plsql笔记和代码

    达内的PLSQL笔记和代码资料,无疑是学习和提升PLSQL技能的重要资源。 在`PLSQL_note.pdf`中,你可能会找到以下知识点: 1. **PLSQL基础**:包括PLSQL的结构,如声明部分、执行部分和异常处理部分,以及变量、常量...

    PLSQL语法总结笔记

    ### PLSQL语法总结笔记 #### 一、数据类型与变量定义 **1. 字符型** - **CHAR**: 固定长度字符类型。 - **VARCHAR2**: 变长字符类型,最大长度可达4000字节。 - **LONG**: 存储长文本数据,最多2000个非汉字...

    PLSQL笔记-从hello word到触发器,包,游标高级应用

    以上只是PLSQL笔记中的部分内容,实际笔记会更详细地介绍每部分的概念、语法和实例,帮助你深入理解并熟练运用PLSQL进行数据库编程。通过学习这些笔记,你将能够掌握PLSQL的高级应用,从而在Oracle数据库开发中...

Global site tag (gtag.js) - Google Analytics