oracle执行存储过程
一。 概述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 存储过程执行
发两个例子你仔细看。
--1.存储过程
create or replace procere print(msg varchar2)
is
begin
dbms_output.put_line(msg);
end;
--1.1 调用存储过程
execute print('helloworld');
--1.3 传递参数
create or replace procere myabs(p_num1 IN number,p_num2 OUT number)
is
begin
if p_num1 >0 then
p_num2 := p_num1;
else
p_num2 := (0 - p_num1);
end if;
end;
--调用
declare
v_result number;
begin
myabs(-987,v_result);
print(v_result);
end;
打字不易,如满意,望采纳。
③ Oracle 如何能得到执行过的存储过程
需要在存储过程中定义的时候把开始执行时间和结束时间打印出来。
举例如下:
创建存储过程:
createorreplaceprocerep_testasv_begintimevarchar2(20);v_endtimevarchar2(20);v_strvarchar2(10);beginv_begintime:=to_char(sysdate,'yyyy-mm-ddhh24:mi:ss');select'badkano'intov_strfromal;v_endtime:=to_char(sysdate,'yyyy-mm-ddhh24:mi:ss');dbms_output.put_line('开始时间为:'||v_begintime);dbms_output.put_line('结束时间为:'||v_endtime);end;end;
执行存储过程:
beginp_test;end;
执行结果:
说明:由于样例存储过程过于简单,但在进行过多数据处理的时候,看到的结果会比较明显。
④ oracle查看执行过哪些存储过程
selectt.sql_id,
t.sql_text,
s.plan_hash_value,
s.optimizer_cost,
s.executions_total,
s.elapsed_time_total,
s.disk_reads_total,
s.buffer_gets_total
fromDBA_HIST_SQLSTATs,DBA_HIST_SQLTEXTt
wheres.sql_id=t.sql_id
andt.sql_textlike'%存储过程名称%';
没有想到其他好办法,确实不太好查了,把存储过程当作SQL来查找吧。
⑤ oracle 存储过程中调用存储过程
一个带参数的存储过程。
SQL> CREATE OR REPLACE PROCEDURE HelloWorld1 (
2 p_user_name VARCHAR2
3 ) AS
4 BEGIN
5 dbms_output.put_line('Hello ' || p_user_name || '!');
6 END HelloWorld1;
7 /
Procere created.
SQL> CREATE OR REPLACE PROCEDURE CallHelloWorld1 (
2 p_user VARCHAR2
3 ) AS
4 BEGIN
5 -- 调用存储过程的 存储过程
6 HelloWorld1(p_user);
7 END CallHelloWorld1;
8 /
Procere created.
执行
SQL> set serveroutput on
SQL> exec CallHelloWorld1( 'Tom' );
Hello Tom!
PL/SQL procere successfully completed.
⑥ oracle sql/plus中执行存储过程
因为有输出参数,所以只能通过declare块执行,如下:
declare
声明变量,就是CodeType 、input_code、cu_patient ,可对前两个直接赋值
begin
GetSampleInfo(CodeType, input_code,cu_patient) ;
end;
/
----
多动动手!如果没输出参数可以直接"exec 过程名(参数)"调用,否则就按我说的做,自己往里添加代码就行
⑦ oracle 怎么调用存储过程
ORACLE存储过程 以oracle自带例子数据库的表举例
1、
create or replace procere p
is
cursor c is
select * from emp2 for update;
begin
for v_emp in c loop
if(v_emp.sal <2000) then
update emp2 set sal =sal+1 where current of c ;
elsif(v_emp.sal>=2000) then
delete from emp2 where current of c;
end if;
end loop;
commit;
end;
创建了存储过程不代表运行了存储过程;
运行此存储过程 :
方式一 exec p;
方式二
begin
p;
end;
2、带参数的存储过程
in 相当于程序里的参数,供传入用,在存储过程不能改变其值;
out 相当于程序里的返回值,在存储过程中可以为其赋值传出;
in out 既可以当参数又可以当返回值用;
不带上述说明符默认为in类型;
下例中v_a v_b 为in类型
v_c 为out类型
v_d 为in out 类型
create or replace procere p(v_a in number,v_b number,v_c out number,v_d in out number)
is
begin
if(v_a > v_b) then
v_c := v_a;
else
v_c := v_b;
end if;
v_d := v_d+1;
end;
---> 调试时:
可以在命令窗口调试,出错时 用show errors 显示出错信息;
可以在plDv中调试;
---> 运行时:
可以在命令窗口运行:
declare
v_a number:=3;
v_b number:=4;
v_c number;
v_d number:=5;
begin
p(v_a,v_b,v_c,v_d);
dbms_output.put_line(v_c);
dbms_output.put_line(v_d);
end;
可以在plDv中调试;
⑧ oracle 中用什么命令执行一个带参数的存储过程
具体如下:
1、第一步,创建一个新的存储过程,见下图,转到下面的步骤。
⑨ 请问oracle怎么执行存储过程
我试验过了,就是exec 存储过程名或者execute 存储过程名(参数),请你在仔细确认一下,你的存储过程名写没写对呀,或者你没有进入sqlplus中?
----
以上,希望对你能有帮助。
⑩ 在oracle中 存储过程如何调用存储过程
如果是在三层中的话,把DAL、BLL写出来,然后在Web层中调用BLL中的方法,就这样。。