十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
调用oracle存储过程用begin...end的方式。
创新互联公司2013年至今,先为宾川等服务建站,宾川等地企业,进行企业商务咨询服务。为宾川企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
基本语法:
begin
存储过程名(参数1,参数2……);--如果无参数则省略括号及括号内部分end;
如,有存储过程:
create
or
replace
procedure
p_testasv_begintime
varchar2(20);v_endtime
varchar2(20);v_str
varchar2(10);begin
v_begintime:=to_char(sysdate,'yyyy-mm-dd
hh24:mi:ss');
select
'badkano'
into
v_str
from
dual;
v_endtime:=to_char(sysdate,'yyyy-mm-dd
hh24:mi:ss');
dbms_output.put_line('开始时间为:'||v_begintime);
dbms_output.put_line('结束时间为:'||v_endtime);end;
执行:begin
p_test;end;
sqlplus或者PL/SQL
SQL窗口
输入(单独调用存储过程):
无参数
EXEC
过程名;
或者
BEGIN
过程名
END;
IN
参数
EXEC
过程名(入参数..);
或者
BEGIN
过程名(入参数...)
END;
OUT参数,IN
OUT参数
variable
绑定变量名
数据类型;
//定义一个变量接收出参数的值;
EXEC
过程名(:绑定变量名);
一。 概述Oracle存储过程开发的要点是:
1; 使用Notepad文本编辑器,用Oracle PL/SQL编程语言写一个存储过程;
2; 在Oracle数据库中创建一个存储过程;
3; 在Oracle数据库中使用SQL*Plus工具运行存储过程;
4; 在Oracle数据库中修改存储过程;
5; 通过编译错误调试存储过程;
6; 删除存储过程;二。环境配置
包括以下内容:
1; 一个文本编辑器Notepad;
2; Oracle SQL*Plus工具,提交Oracle SQL和PL/SQL 语句到Oracle database。
3; Oracle 10g express数据库,它是免费使用的版本;
需要的技巧:
4; SQL基础知识,包括插入、修改、删除等
5; 使用Oracle's SQL*Plus工具的基本技巧;
6; 使用Oracle's PL/SQL 编程语言的基本技巧;三。写一个存储过程
在Notepad, 写下:
CREATE OR REPLACE PROCEDURE skeletonISBEGINNULL;END;把文件存为skeleton.sql.
让我们一行行遍历这个存储过程:
1 CREATE OR REPLACE PROCEDURE skeleton2 IS3 BEGIN
4 NULL;5 END;行1:CREATE OR REPLACE PROCEDURE 是一个SQL语句通知Oracle数据库去创建一个叫做skeleton存储过程, 如果存在就覆盖它;行2:IS关键词表明后面将跟随一个PL/SQL体。
行3:BEGIN关键词表明PL/SQL 体的开始。
四。创建一个存储过程
SQL语句CREATE OR REPLACE PROCEDURE在Oracle数据库中创建、编译和保存一个存储过程。
从Window打开SQL*Plus并且从SQL*Plus 登录到你的数据库;打开skeleton.sql文件。
在SQL命令提示符下输入以下命令:
SQL@skeletonSQL/SQL*Plus装载skeleton.sql文件的内容到 SQL*Plus缓冲区并且执行SQL*Plus语句;SQL*Plus 会通知你存储过程已经被成功地创建。
使用oracle调用存储过程得方式和plsql不一样,下面给你个调用例子
过程调用方式一
declare
realsal emp.sal%type;
realname varchar(40);
realjob varchar(40);
begin //存储过程调用开始
realsal:=1100;
realname:='';
realjob:='CLERK';
runbyparmeters(realsal,realname,realjob); --必须按顺序
DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB);
END; //过程调用结束
过程调用方式二
declare
realsal emp.sal%type;
realname varchar(40);
realjob varchar(40);
begin //过程调用开始
realsal:=1100;
realname:='';
realjob:='CLERK';
runbyparmeters(sname=realname,isal=realsal,sjob=realjob); --指定值对应变量顺序可变
DBMS_OUTPUT.PUT_LINE(REALNAME||' '||REALJOB);
END; //过程调用结束
运行存储过程使用exec命令
格式为:exec 存储过程名(参数1,参数2...)
例子:exec sp_renamedb('u01','u02',3,4)
例子说明:存储过程名字为sp_renamedb 参数有4个,前两个是char类型,后两个是int类型。
DECLARE v_value VARCHAR2(100); --声明一个变量,用来存放返回的值BEGINP_MES_SB_JBEffectCheck('2010-01','2010-10',v_value); --执行存储过程P_MES_SB_JBEffectCheck,该存储过程接收2个时间值的参数,返回一个varchar类型的值END;注:Oracle存储过程不能返回一张表结构,所以在存储过程里执行select 语句的时候,需要把查询的结果insert到一张表里,或者用一个变量来保存查询结果(此时查询结果必须是一行一列的值)