Oracle 10g 存储过程
2008-09-10 14:07
253 查看
存储过程
create or replace procedure procedure_name
[(parameter[{in | out |in out}] datetype)]
[is | as]
begin
end [procedure_name];
1 不带参数的存储过程
create or replace procedure get_news is
rows number;
begin
select count(*) into rows from stuInfo;
dbms_output.put_line('values is '||rows);
end get_news;
--测试
declare
begin
get_news();
end;
2 带有输入输出参数的存储过程
create or replace procedure multi_params(sex in varchar2,rows out number,msg in out varchar2) is
begin
select count(*) into rows from stuInfo where stuSex=sex;
msg:=msg||sex||'生,共有'||rows||'人!';
end multi_params;
set serverout on
declare
inparm varchar(50):='男';
outparm number(10);
inoutparm varchar(50):='学生信息:>> ';
begin
multi_params(inparm,outparm,inoutparm);
dbms_output.put_line(inoutparm);
end;
测试窗口中测试
declare
inparm char(50);
outparm integer;
inoutparm char(50);
begin
:inparm:='男';
:inoutparm :='学生信息:>> ';
multi_params(:inparm,:outparm,:inoutparm);
end;
命令窗口测试
set serverout on
declare
inparm varchar(50):='男';
outparm number(10);
inoutparm varchar(50):='学生信息:>> ';
begin
multi_params(inparm,outparm,inoutparm);
dbms_output.put_line(outparm||' '||inoutparm);
end;
/
--最后一定要打上/表示语句块结束.
3 创建带有游标的过程
3.1 显示定义游标的格式
create or replace procedure <procedure_name>
is
cursor <cursor_name> is <sql_statement>
begin
for<record_name> in <cursor_name> loop
<other code>
end loop;
end <procedure_name>;
create or replace procedure stuInfo_cur_pro
is
cursor stuinfo_cur
is select stuName from stuInfo;
begin
for stuInfo_rec in stuinfo_cur loop
dbms_output.put_line(stuInfo_rec.stuName);
end loop;
end stuInfo_cur_pro;
测试 exec stuInfo_cur_pro;
3.2 隐式定义游标格式
create or replace procedure <procedure_name>
is
begin
for <record_name> in (<sql_statement>) loop
<other code>
end loop;
end <procedure_name);
create or replace procedure stuInfo_cur_pro_hidden
is
begin
for stuInfo_rec in (select stuName,stuSex from StuInfo) loop
dbms_output.put_line(stuInfo_rec.stuName||' '||stuInfo_rec.stuSex);
end loop;
end stuInfo_cur_pro_hidden;
测试
exec stuInfo_cur_pro_hidden;
4 带有批量绑定的存储过程
create or replace procedure bluk_bind_pro is
begin
type bbp is table of Stuinfo.Stuname% type
index by binary_integer;
temp_bulk bbp;
begin
select stuName bulk collect into temp_bulk from stuInfo;
end
end bluk_bind_pro;
create or replace procedure procedure_name
[(parameter[{in | out |in out}] datetype)]
[is | as]
begin
end [procedure_name];
1 不带参数的存储过程
create or replace procedure get_news is
rows number;
begin
select count(*) into rows from stuInfo;
dbms_output.put_line('values is '||rows);
end get_news;
--测试
declare
begin
get_news();
end;
2 带有输入输出参数的存储过程
create or replace procedure multi_params(sex in varchar2,rows out number,msg in out varchar2) is
begin
select count(*) into rows from stuInfo where stuSex=sex;
msg:=msg||sex||'生,共有'||rows||'人!';
end multi_params;
set serverout on
declare
inparm varchar(50):='男';
outparm number(10);
inoutparm varchar(50):='学生信息:>> ';
begin
multi_params(inparm,outparm,inoutparm);
dbms_output.put_line(inoutparm);
end;
测试窗口中测试
declare
inparm char(50);
outparm integer;
inoutparm char(50);
begin
:inparm:='男';
:inoutparm :='学生信息:>> ';
multi_params(:inparm,:outparm,:inoutparm);
end;
命令窗口测试
set serverout on
declare
inparm varchar(50):='男';
outparm number(10);
inoutparm varchar(50):='学生信息:>> ';
begin
multi_params(inparm,outparm,inoutparm);
dbms_output.put_line(outparm||' '||inoutparm);
end;
/
--最后一定要打上/表示语句块结束.
3 创建带有游标的过程
3.1 显示定义游标的格式
create or replace procedure <procedure_name>
is
cursor <cursor_name> is <sql_statement>
begin
for<record_name> in <cursor_name> loop
<other code>
end loop;
end <procedure_name>;
create or replace procedure stuInfo_cur_pro
is
cursor stuinfo_cur
is select stuName from stuInfo;
begin
for stuInfo_rec in stuinfo_cur loop
dbms_output.put_line(stuInfo_rec.stuName);
end loop;
end stuInfo_cur_pro;
测试 exec stuInfo_cur_pro;
3.2 隐式定义游标格式
create or replace procedure <procedure_name>
is
begin
for <record_name> in (<sql_statement>) loop
<other code>
end loop;
end <procedure_name);
create or replace procedure stuInfo_cur_pro_hidden
is
begin
for stuInfo_rec in (select stuName,stuSex from StuInfo) loop
dbms_output.put_line(stuInfo_rec.stuName||' '||stuInfo_rec.stuSex);
end loop;
end stuInfo_cur_pro_hidden;
测试
exec stuInfo_cur_pro_hidden;
4 带有批量绑定的存储过程
create or replace procedure bluk_bind_pro is
begin
type bbp is table of Stuinfo.Stuname% type
index by binary_integer;
temp_bulk bbp;
begin
select stuName bulk collect into temp_bulk from stuInfo;
end
end bluk_bind_pro;
相关文章推荐
- Oracle 10g实现存储过程异步调用
- Oracle 10g管理存储过程——查询数据库中的视图、存储过程、函数
- oracle 10g 创建存储过程示例 新
- Oracle 10g实现存储过程异步调用
- Oracle 10g存储过程学习二——为参数传递变量和数据
- oracle 10g sqlplus 创建和调用存储过程(procedure)
- Oracle 10g存储过程学习一
- Oracle 10g新特性——代码混淆,存储过程加密
- Oracle 10g新特性——代码混淆,存储过程加密
- 【Oracle】在存储过程里调用外部数据库
- Oracle job procedure 存储过程定时任务
- 用.NET调用oracle的存储过程返回记录集
- Oracle带输入、输出参数的存储过程 返回受影响的行数 SQL%ROWCOUNT
- oracle 在一个存储过程中调用另一个返回游标的存储过程
- Oracle 存储过程
- 如何在Delphi中调用oracle的存储过程返回数据集
- oracle 存储过程
- windows7安装oracle 10g安装过程及注意事项。
- oracle 在一个存储过程中调用另一个返回游标的存储过程
- 【转】Oracle存储过程常用技巧