- 浏览: 361672 次
- 性别:
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示:js跳出循环:brea ...
js跳出循环的方法区别(break,continue,return) -
jahentao:
我觉得Jcreator和eclipse中的列出属性和方法,很多 ...
反射原理 -
T240178168:
相互交流下吧
ie9以下都有这个问题(ajax) -
blackproof:
试了一下,的确第一种写法oracle优化了,效率比第二种快多了 ...
Oracle分页sql语句 -
杨白白:
进程与线程
/*
存储过程
参数类型:
in 表示入参
out 表示出参
in out 表示既是入参又是出参
默认情况下是入参
注意: 存储过程的参数数据类型不需要指定精度
*/
create or replace procedure pro_myjob(title in varchar2)
is
var_mytitle jobs.job_title%type;
begin
select j.job_title into var_mytitle from jobs j where j.job_id=title;
dbms_output.put_line('工种:'||var_mytitle);
exception
when no_data_found then
raise_application_error(-20000,'no data found');
end;
create or replace procedure sp_insertJobs(p_id varchar2,p_title varchar2,p_salarymin number,p_salarymax number)
is
begin
insert into jobs values(p_id,p_title,p_salarymin,p_salarymax);
commit;
end;
--出参---
create or replace procedure sp_myjobForOut(p_title in varchar2, p_errMsg out varchar2)
as
var_mySalary jobs.max_salary%type;
--var_mySalary number(10);
begin
select j.max_salary into var_mySalary from jobs j where j.job_id=p_title;
dbms_output.put_line('最高薪水:'||var_mytitle);
exception
when no_data_found then
p_errMsg:='没有'||p_title||'工号对应的数据';
when too_many_rows then
p_errMsg:=p_title||'工号对应的数据过多';
when others then
p_errMsg:='不确定的错误';
end;
--存储过程调用-----
declare
var_err varchar2(200);
begin
dbms_output.put_line('bef'||var_err);
sp_myjobForOut('AD_PREwS',var_err);
dbms_output.put_line('af'||var_err);
end;
--参数 in out-----
create or replace procedure sp_myjobintout(p_msg in out varchar2)
is
v_msg varchar2(200);
begin
select j.max_salary into v_msg from jobs j where j.job_id=p_msg;
p_msg:='最高薪水:'||v_msg;
exception
when no_data_found then
p_msg:='没有工号对应的数据';
when too_many_rows then
p_msg:='工号对应的数据过多';
when others then
p_msg:='不确定的错误';
end;
declare
var_err varchar2(200):='AD_PRESs';
begin
dbms_output.put_line('bef'||var_err);
sp_myjobintout(var_err);
dbms_output.put_line('af'||var_err);
end;
select * from jobs
declare
var_msg varchar2(20);
begin
pro_myjob('AD_PRES2',var_msg);
dbms_output.put_line(var_msg);
end;
--存储过程的查看-----
select * from user_source
where lower(name) = 'sp_myjobintout';
--删除------
drop procedure sp_myjobintout
select * from jobs
--------------创建函数--------------------
select * from demo where did=1;
select substr(dname,3,3) from demo where did=1;
create or replace function f_demo(aid number) return varchar2
is
name1 varchar2(20);
begin
select dname into name1 from demo where did=aid;
return name1;
end;
-------------调用-----
declare
name1 varchar2(20);
begin
--name1:=f_demo(aid=>3);
select f_demo(3) into name1 from dual;
dbms_output.put_line(name1);
end;
-----2 comandline
var name1 varchar2;--定义变量
exec :name1:=f_demo(1);---执行 :name1
--------------------------------------
create or replace function f_demo_row(aid number) return demo%rowtype
is
rowdata demo%rowtype;
begin
select * into rowdata from demo where did=aid;
return rowdata;
exception
when others then
dbms_output.put_line('error:'||sqlerrm);
end;
----------pl/sql调用------
declare
rowdata1 demo%rowtype;
begin
rowdata1:=f_demo_row(3);
dbms_output.put_line(rowdata1.did||' '||rowdata1.dname);
end;
-------------------包------------
create or replace package pkg_t2
is
procedure p_demo(aid in number,aname in out varchar2);
function f_demo(aid number) return varchar2;
function f_demo(aname varchar2) return demo%rowtype;
end pkg_t2;
---包体--------
create or replace package body pkg_t2
is
procedure p_demo(aid in number,aname in out varchar2)
is
name1 varchar2(10);
begin
select dname into name1 from demo where did=aid;
aname:=name1;
end p_demo;
function f_demo(aid number) return varchar2
is
name1 varchar2(20);
begin
select dname into name1 from demo where did=aid;
return name1;
end f_demo;
function f_demo(aname varchar2) return demo%rowtype-- ref
is
rowdata demo%rowtype;
begin
select * into rowdata from demo where dname=aname;
return rowdata;
exception
when others then
dbms_output.put_line('error:'||sqlerrm);
end;
end pkg_t2;
------------调用-----------
pkg_t2.f_demo(aname=>'sss')
------------包 与 游标-----------------
create or replace package pkg_cur is
type my_cur_type is ref cursor;
cursor mycur return jobs%rowtype;
procedure sp_getdata(p_sql varchar2,p_cursor in out my_cur_type);
end pkg_cur;
create or replace package body pkg_cur is
cursor mycur return jobs%rowtype is select * from jobs;
procedure sp_getdata(p_sql varchar2,p_cursor in out my_cur_type)
as
begin
open p_cursor for p_sql;
end sp_getdata;
end pkg_cur;
declare
my_cur pkg_cur.my_cur_type;
rowdata jobs%rowtype;
begin
-- my_cur:=pkg_cur.mycur;
open pkg_cur.mycur;
loop
fetch pkg_cur.mycur into rowdata;
exit when pkg_cur.mycur%notfound;
dbms_output.put_line('did:'||rowdata.job_id||' dname:'||rowdata.job_title);
end loop;
close pkg_cur.mycur;
end;
select * from jobs
create or replace procedure sp_getdata(p_sql varchar2,p_cursor in out pkg_cur.my_cur_type)
as
begin
open p_cursor for p_sql;
end;
存储过程
参数类型:
in 表示入参
out 表示出参
in out 表示既是入参又是出参
默认情况下是入参
注意: 存储过程的参数数据类型不需要指定精度
*/
create or replace procedure pro_myjob(title in varchar2)
is
var_mytitle jobs.job_title%type;
begin
select j.job_title into var_mytitle from jobs j where j.job_id=title;
dbms_output.put_line('工种:'||var_mytitle);
exception
when no_data_found then
raise_application_error(-20000,'no data found');
end;
create or replace procedure sp_insertJobs(p_id varchar2,p_title varchar2,p_salarymin number,p_salarymax number)
is
begin
insert into jobs values(p_id,p_title,p_salarymin,p_salarymax);
commit;
end;
--出参---
create or replace procedure sp_myjobForOut(p_title in varchar2, p_errMsg out varchar2)
as
var_mySalary jobs.max_salary%type;
--var_mySalary number(10);
begin
select j.max_salary into var_mySalary from jobs j where j.job_id=p_title;
dbms_output.put_line('最高薪水:'||var_mytitle);
exception
when no_data_found then
p_errMsg:='没有'||p_title||'工号对应的数据';
when too_many_rows then
p_errMsg:=p_title||'工号对应的数据过多';
when others then
p_errMsg:='不确定的错误';
end;
--存储过程调用-----
declare
var_err varchar2(200);
begin
dbms_output.put_line('bef'||var_err);
sp_myjobForOut('AD_PREwS',var_err);
dbms_output.put_line('af'||var_err);
end;
--参数 in out-----
create or replace procedure sp_myjobintout(p_msg in out varchar2)
is
v_msg varchar2(200);
begin
select j.max_salary into v_msg from jobs j where j.job_id=p_msg;
p_msg:='最高薪水:'||v_msg;
exception
when no_data_found then
p_msg:='没有工号对应的数据';
when too_many_rows then
p_msg:='工号对应的数据过多';
when others then
p_msg:='不确定的错误';
end;
declare
var_err varchar2(200):='AD_PRESs';
begin
dbms_output.put_line('bef'||var_err);
sp_myjobintout(var_err);
dbms_output.put_line('af'||var_err);
end;
select * from jobs
declare
var_msg varchar2(20);
begin
pro_myjob('AD_PRES2',var_msg);
dbms_output.put_line(var_msg);
end;
--存储过程的查看-----
select * from user_source
where lower(name) = 'sp_myjobintout';
--删除------
drop procedure sp_myjobintout
select * from jobs
--------------创建函数--------------------
select * from demo where did=1;
select substr(dname,3,3) from demo where did=1;
create or replace function f_demo(aid number) return varchar2
is
name1 varchar2(20);
begin
select dname into name1 from demo where did=aid;
return name1;
end;
-------------调用-----
declare
name1 varchar2(20);
begin
--name1:=f_demo(aid=>3);
select f_demo(3) into name1 from dual;
dbms_output.put_line(name1);
end;
-----2 comandline
var name1 varchar2;--定义变量
exec :name1:=f_demo(1);---执行 :name1
--------------------------------------
create or replace function f_demo_row(aid number) return demo%rowtype
is
rowdata demo%rowtype;
begin
select * into rowdata from demo where did=aid;
return rowdata;
exception
when others then
dbms_output.put_line('error:'||sqlerrm);
end;
----------pl/sql调用------
declare
rowdata1 demo%rowtype;
begin
rowdata1:=f_demo_row(3);
dbms_output.put_line(rowdata1.did||' '||rowdata1.dname);
end;
-------------------包------------
create or replace package pkg_t2
is
procedure p_demo(aid in number,aname in out varchar2);
function f_demo(aid number) return varchar2;
function f_demo(aname varchar2) return demo%rowtype;
end pkg_t2;
---包体--------
create or replace package body pkg_t2
is
procedure p_demo(aid in number,aname in out varchar2)
is
name1 varchar2(10);
begin
select dname into name1 from demo where did=aid;
aname:=name1;
end p_demo;
function f_demo(aid number) return varchar2
is
name1 varchar2(20);
begin
select dname into name1 from demo where did=aid;
return name1;
end f_demo;
function f_demo(aname varchar2) return demo%rowtype-- ref
is
rowdata demo%rowtype;
begin
select * into rowdata from demo where dname=aname;
return rowdata;
exception
when others then
dbms_output.put_line('error:'||sqlerrm);
end;
end pkg_t2;
------------调用-----------
pkg_t2.f_demo(aname=>'sss')
------------包 与 游标-----------------
create or replace package pkg_cur is
type my_cur_type is ref cursor;
cursor mycur return jobs%rowtype;
procedure sp_getdata(p_sql varchar2,p_cursor in out my_cur_type);
end pkg_cur;
create or replace package body pkg_cur is
cursor mycur return jobs%rowtype is select * from jobs;
procedure sp_getdata(p_sql varchar2,p_cursor in out my_cur_type)
as
begin
open p_cursor for p_sql;
end sp_getdata;
end pkg_cur;
declare
my_cur pkg_cur.my_cur_type;
rowdata jobs%rowtype;
begin
-- my_cur:=pkg_cur.mycur;
open pkg_cur.mycur;
loop
fetch pkg_cur.mycur into rowdata;
exit when pkg_cur.mycur%notfound;
dbms_output.put_line('did:'||rowdata.job_id||' dname:'||rowdata.job_title);
end loop;
close pkg_cur.mycur;
end;
select * from jobs
create or replace procedure sp_getdata(p_sql varchar2,p_cursor in out pkg_cur.my_cur_type)
as
begin
open p_cursor for p_sql;
end;
发表评论
-
DML、DDL、DCL区别
2017-01-22 22:32 856DML(data manipulation languag ... -
DDL与DML问题
2017-01-22 22:30 786因为DML需要提交 而truncate是自动提交的 你要分清哪 ... -
oracle锁表,kill
2015-08-26 18:41 906select sess.SID, sess.SE ... -
ROW_NUMBER() OVER函数的基本用法
2014-09-23 00:27 1161简单的说row_number()从1开始,为每一条分组记录返回 ... -
在oracle中一个汉字,一个字母,一个数字分别占多少个字符
2014-01-08 22:01 2256都是一个字符,如果是字节数的话,就要看你的数据库使用的是什么字 ... -
oracle hint有什么缺点?
2013-11-03 22:37 713有意思的问题。hint本质上就是修改默认优化器计算执行计划的一 ... -
Oracle Hint的用法
2013-11-03 22:36 8551. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优 ... -
谈GROUP BY 中的ROLLUP函数
2013-09-05 22:55 2197rollup(a,b)的特点是,先安(a,b)一起汇总统计,然 ... -
group by后加rollup子句的用法
2013-09-05 22:54 1151group by后带rollup子句的用法(真是丑死人了,接触 ... -
ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
2013-09-05 22:47 1977CASE 语句 CASE selector WHEN v ... -
oracle 日期比较
2013-05-30 17:42 2993案例1 select To_Date('19-01-01', ... -
Oracle--------Decode()
2012-09-23 20:52 1912DECODE函数的作用:它可以将输入数值与函数中的参数列 ... -
flashback——oracle
2012-09-19 19:52 2489oracle10g的回闪包括以下 ... -
oracle存储过程语法
2012-09-08 15:14 31801.基本结构 CREATE OR REPLACE PROCE ... -
Oracle的递归
2012-09-03 22:39 3265Oracle的递归查询 收集的几条在oracle中通过con ... -
oracle常用函数
2012-09-03 22:27 22461. ASCII 返回与指定的字符对应的十进制数; SQL ... -
Oracle经验技巧收集集锦
2012-09-03 22:14 24341.删除表空间 DROP TABLESPACE TableS ... -
Oracle分页sql语句
2012-09-01 21:37 2732Oracle的分页查询语句基本上可以按照本文给出的格式来进行 ... -
oracle case ,loop,while ,for简单实例
2012-09-01 21:27 3684select * from employees emp w ... -
ORACLE创建表空间
2012-09-01 21:24 1029ORACLE中,表空间是数据管理的基本方法,所有用户的对象要 ...
相关推荐
oracle 的函数、存储过程、游标、简单实例 oracle常用语句oracle 的函数、存储过程、游标、简单实例 oracle常用语句
oracle中的存储过程.函数,包的创建,更新实例
Oracle存储过程和函数(最详细包含emp 表实例操作,边看边操作),目前最详细的存储过程文档,不好你举报我。含好多ORACLE SCOTT中emp表的实例。
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
自定义函数不能被直接在Java中调用,可以通过存储过程调用函数的方法。本文采用实例的方法,介绍如何在Oracle数据库客户端PL/SQL中创建自定义函数,然后创建相应的存储过程调用该函数,最终实现一个实例计算。
第一章 oracle存储过程概述 2 1.1 存储过程基本结构(PROCEDURE) 3 1.1.1创建存储过程 3 1.1.2 存储过程删除 5 1.1.3 调用存储过程 5 1.2存储函数(FUNCTIONE) 6 1.2.1 创建存储函数 6 1.2.2 删除存储函数 7 1.3 包...
本文实例讲述了oracle 存储过程、函数和触发器用法。分享给大家供大家参考,具体如下: 一、存储过程和存储函数 指存储在数据库中供所有用户程序调用的子程序叫存储过程、存储函数。 创建存储过程 用CREATE ...
本文的实例全部经过实际操作验证,欢迎下载学习!
Oracle 数据类型及存储方式 概述 通过实例,全面而深入的分析oralce的基本数据类型及它们的存储方式。以ORACLE 10G为基础,介绍oralce 10g引入的新的数据类型。让你对oracle数据类型有一个全新的认识。揭示一些不...
oracle 存储过程,函数,包的超详细讲解课件带有实例讲解并有实例练习。
本文通过实例代码给大家介绍了oracle百分比分析函数RATIO_TO_REPORT() OVER(),代码简单易懂,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
Oracle生成单据编号存储过程,在做订单类似的系统都可能会存在订单编号不重复,或是流水号按日,按年,按月进行重新编号。 可以参考以下存储过程 CREATE OR REPLACE procedure Pro_GetBillNO(TypeTable in varchar2...
oracle数据库ppt 第1章 关系数据库与SQL语言环境 第2章 数据查询 第3章 数据操作 第4章 表和视图 第5章 其他数据库对象 第6章 SQL基础 ...第8章 存储过程、函数和包 第9章 触发器 第10章 数据库开发应用实例
代码如下:import java.sql.CallableStatement;import java.sql.Connection;...public class TestPage { public TestPage() { } public static void main(String[] args) { String driver = “oracle.jdbc.driver
里面分开写了oracle的各个部分的实例,有包,函数,存储过程,触发器等,适合入门的人。
本文介绍了Oracle 中的表、索引、视图、同义词、函数、存储过程、触发器及包等。测试通过的基础上,采用语法结合实例的方式,对这些常用对象使用方法、命令、步骤及注意事项进行了说明和讲解,读者按照本文学习,...
本文实例讲述了Oracle存储过程循环语法。分享给大家供大家参考,具体如下: 1、简单循环 语法 loop statements; end loop; 例子: counter := 0; loop counter := counter + 1; exit when counter = 5; end ...
8.3.3 调用程序包中的函数/存储过程 157 8.3.4 程序包中的变量 158 8.4 本章实例 159 8.5 本章小结 161 8.6 习题 161 …… 第9章 游标(教学视频:36分钟) 162 第10章 触发器(教学视频:58分钟) 178 第11...
目录 第1章数据库简介ppt ...第17章函数与存储过程ppt 第18章数据车性能优化.ppt 第l9章数据库一致性与事务管理。ppt 第20章并发控制.ppt 第2l章Oracle在开发中的应用ppt 第22章Oracle+Hibernate应用实例.ppt