- 浏览: 367323 次
- 性别:
最新评论
-
天使建站:
这里这篇文章更详细 还有完整的实例演示: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 1178DML(data manipulation languag ... -
DDL与DML问题
2017-01-22 22:30 855因为DML需要提交 而truncate是自动提交的 你要分清哪 ... -
oracle锁表,kill
2015-08-26 18:41 949select sess.SID, sess.SE ... -
ROW_NUMBER() OVER函数的基本用法
2014-09-23 00:27 1202简单的说row_number()从1开始,为每一条分组记录返回 ... -
在oracle中一个汉字,一个字母,一个数字分别占多少个字符
2014-01-08 22:01 2322都是一个字符,如果是字节数的话,就要看你的数据库使用的是什么字 ... -
oracle hint有什么缺点?
2013-11-03 22:37 773有意思的问题。hint本质上就是修改默认优化器计算执行计划的一 ... -
Oracle Hint的用法
2013-11-03 22:36 8971. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优 ... -
谈GROUP BY 中的ROLLUP函数
2013-09-05 22:55 2271rollup(a,b)的特点是,先安(a,b)一起汇总统计,然 ... -
group by后加rollup子句的用法
2013-09-05 22:54 1218group by后带rollup子句的用法(真是丑死人了,接触 ... -
ORACLE CASE WHEN 及 SELECT CASE WHEN的用法
2013-09-05 22:47 2013CASE 语句 CASE selector WHEN v ... -
oracle 日期比较
2013-05-30 17:42 3056案例1 select To_Date('19-01-01', ... -
Oracle--------Decode()
2012-09-23 20:52 1954DECODE函数的作用:它可以将输入数值与函数中的参数列 ... -
flashback——oracle
2012-09-19 19:52 2532oracle10g的回闪包括以下 ... -
oracle存储过程语法
2012-09-08 15:14 32201.基本结构 CREATE OR REPLACE PROCE ... -
Oracle的递归
2012-09-03 22:39 3310Oracle的递归查询 收集的几条在oracle中通过con ... -
oracle常用函数
2012-09-03 22:27 22861. ASCII 返回与指定的字符对应的十进制数; SQL ... -
Oracle经验技巧收集集锦
2012-09-03 22:14 24741.删除表空间 DROP TABLESPACE TableS ... -
Oracle分页sql语句
2012-09-01 21:37 2801Oracle的分页查询语句基本上可以按照本文给出的格式来进行 ... -
oracle case ,loop,while ,for简单实例
2012-09-01 21:27 3727select * from employees emp w ... -
ORACLE创建表空间
2012-09-01 21:24 1069ORACLE中,表空间是数据管理的基本方法,所有用户的对象要 ...
相关推荐
以上内容只是Oracle函数、存储过程和游标的基础介绍。实际应用中,你可能需要结合触发器、异常处理、动态SQL等更高级的概念。通过熟练掌握这些工具,你可以更高效地设计和优化Oracle数据库应用程序。对于初学者,...
**二、Oracle函数** 函数与存储过程相似,但函数必须返回一个值,而存储过程可以不返回。函数可以被用作查询的一部分,提升SQL语句的灵活性。 1. **创建函数**:使用`CREATE FUNCTION`语句定义函数,例如: ```...
根据提供的文件内容,本文将详细解释Oracle数据库中的存储过程、函数和包的创建与使用方法。这三者都是Oracle数据库中PL/SQL编程的重要组成部分,它们可以提高代码的复用性和可维护性,并且能够有效地封装数据库逻辑...
本资源包“oracle函数大全与存储过程语法-中文.rar”涵盖了从Oracle 9i到10G版本的函数和存储过程的详细信息,旨在帮助用户深入理解和应用这些关键概念。 1. **Oracle函数大全**: - 函数是预定义的代码块,接受一...
本文实例讲述了Python使用cx_Oracle调用Oracle存储过程的方法。分享给大家供大家参考,具体如下: 这里主要测试在Python中通过cx_Oracle调用PL/SQL。 首先,在数据库端创建简单的存储过程。 create or replace ...
这份"oracle笔记(存储过程函数触发器游标流程控制等)"涵盖了Oracle数据库管理中的关键知识点,包括但不限于以下几个方面: 1. **存储过程与函数**:存储过程是预编译的SQL语句集合,用于执行特定任务。它们可以提高...
### Oracle存储过程、函数与DBLink详解 #### 一、Oracle存储过程简介 在Oracle数据库中,存储过程是一种预编译好的SQL代码集合,它可以接受输入参数、返回单个值或多个值,并能够执行复杂的数据库操作。存储过程...
Oracle数据库系统提供了丰富的功能,其中包括各种内置函数和存储过程,这些工具对于数据库管理和开发工作至关重要。本文主要聚焦于两个核心组件:`DBMS_OUTPUT`包和`DBMS_JOB`包,详细阐述它们的作用、用法及其相关...
Oracle 存储过程概念及实例 Oracle 存储过程是一种可以在数据库中存储和执行的一或多个 SQL 命令的对象。用户可以通过指定存储过程的名字并给出参数来执行它。 优点: 1. 大大提高效率。存储过程本身的执行速度...
Oracle PL/SQL是Oracle数据库系统中的一个强大工具,它结合了SQL的数据操作能力和...对于初学者,可以参考《Oracle PLSQL存储过程以及函数编写.pdf》和《本地规范实例详解.pdf》等资料,结合实际练习来巩固理论知识。
Oracle数据库是世界上最流行的数据库管理系统之一,它提供了丰富的功能和工具,包括各种内置的包、存储过程和函数,以满足复杂的数据库管理和应用需求。本篇主要介绍两个常用的Oracle包:dbms_output 和 dbms_job,...
自定义函数不能被直接在Java中调用,可以通过存储过程调用函数的方法。本文采用实例的方法,介绍如何在Oracle数据库客户端PL/SQL中创建自定义函数,然后创建相应的存储过程调用该函数,最终实现一个实例计算。
对于Oracle函数,由于它会返回一个值,所以在Java中调用时,需要使用`registerOutParameter()`方法先声明返回值的数据类型,然后通过`CallableStatement`的`getXXX()`方法获取返回值。例如,如果函数返回一个整数,...
在Oracle数据库管理中,创建基础数据表、函数与存储过程是构建复杂应用系统的基础步骤。以下将基于给定文件中的信息,深入解析如何在Oracle环境下进行这些操作。 ### 创建用户 首先,创建用户是进行数据库操作的...
Oracle 存储过程是数据库管理中的重要组成部分,它允许开发者将复杂的业务逻辑和操作封装成独立的可执行单元,以提高代码复用性和系统效率。本文将深入探讨Oracle存储过程的基础知识、语法以及常见问题。 1. **基础...
总的来说,"Oracle通过存储过程POST方式访问接口"涉及到数据库编程、网络通信和安全性等多个方面,需要综合运用PL/SQL和Oracle的网络工具。通过学习和实践,你可以构建出高效、安全的接口交互方案。
Oracle存储过程是数据库管理系统Oracle中的一种重要特性,它允许开发者编写一组SQL和PL/SQL语句,形成一个可重复使用的程序单元。存储过程是数据库对象,可以在需要时被调用执行,提供了模块化的设计和高效的执行。...
标题中的“pb中执行oracle存储过程脚本”指的是在PowerBuilder(简称PB)环境中调用Oracle数据库的存储过程。PowerBuilder是一种可视化的开发工具,常用于构建数据驱动的应用程序。Oracle存储过程则是在Oracle数据库...
在软件开发领域,尤其是涉及到数据库交互时,C# 调用 Oracle 存储过程是一项常见的任务。这个实例提供了一个简单的方法来实现这一操作。首先,我们从 Oracle 数据库的角度出发,了解如何创建一个存储过程。 1. 创建...