执行存储过程总结

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情
PLSQL存储过程(基础篇)
2009-11-02 15:14

我不是专门的开发人员,但存储过程又是很重要的知识,为了能够很好的记忆,现把这些基础知识总结一下。存储过程可以实现代码的充分共享,提高系统性能。

基础篇       知识回顾

如果经常使用特定操作,哪么可以考虑基于这些操作使用过程,简化开发和维护,可以充分实现代码共享,提高系统性能。

过程的分类:

(一)有过程参数

  (二)没有过程参数的
             1.输入参数(默认是输入参数)
             2.输出参数
             3.输入输出参数
基本语法规则:
Create or replace procedure procedure_name(argument1 [mode1] datatype1 , argument2 [mode2] datatype2 ……)
Is [as]
PL/SQL Block;
注意:当定义参数时,只能指定数据类型,不能指定长度.
范例一:无参数的过程
create or replace procedure a_time
is
begin
dbms_session.set_nls('nls_date_format','''yyyy-mm-dd''');
dbms_output.put_line(sysdate);
end;
/
执行过程:(调用无参数过程可以直接引用过程名)
SQL> exec a_time;
2008-03-04                                                                     
PL/SQL 过程已成功完成
范例二:具有输入参数的过程:
SQL> create or replace procedure b_insert (i emp.id%type,n emp.name%type)
2 is
3 begin
4 insert into emp values(i,n);
5 commit;
6 end;
SQL> 过程已创建。
执行这个过程:
SQL> exec b_insert('14','peter_lin');
PL/SQL 过程已成功完成。
SQL> select * from emp;
ID          NAME                                                                
---------- ----------                                                          
14         peter_lin                                                           
1          DICK_t                                                               
可以看到,数据自动插入到了表格中。
范例三:带有输出参数的过程:
SQL> create or replace procedure c_update(old varchar2,new emp.id%type,nam out emp.name%type)
2 is
3 begin
4 select name into nam from emp where id=old;
5 update emp set id=new where id=old;
6 commit;
7 end;
SQL> 过程已创建。
执行这个过程:带有输出参数的过程,需要使用变量接收这个输出值。
SQL> declare
2 nn emp.name%type;
3 begin
4 c_update(&old,&new,nn);
5 dbms_output.put_line('被修改id的员工姓名:'||nn);
6 end;
7 /
输入 old 的值: 14
输入 new 的值: 12
原值    4: c_update(&old,&new,nn);
新值    4: c_update(14,12,nn);
被修改id的员工姓名:peter_lin                                                  
PL/SQL 过程已成功完成。
SQL> select * from emp;
ID         NAME                                                                 
---------- ----------                                                          
12         peter_lin                                                           
1          DICK_t                                                               
已选择2行。
范例四:带有输入输出参数的过程
SQL>create or replace procedure in_out
2 (n1 in out number,n2 in out number) is
3 v1 number;
4 v2 number;
5 begin
6 v1:=trunc(n1/n2);
7 v2:=mod(n1,n2);
8 n1:=v1;
9 n2:=v2;
10 end;
SQL> 过程已创建。
执行这个过程:
SQL>declare
2 a1 number:=&n1;
3 a2 number:=&n2;
4 begin
5 in_out(a1,a2);
6 dbms_output.put_line('除法的商'||a1||',除法的余数:'||a2);
7 end;
SQL> 输入 n1 的值: 100
原值    2: a1 number:=&n1;
新值    2: a1 number:=100;
输入 n2 的值: 3
原值    3: a2 number:=&n2;
新值    3: a2 number:=3;
除法的商33,除法的余数:1  

 

 

  
Oracle11gR2 并行执行存储过程 现在我们有3个存储过程,分别是p1,p2,p3 如果按下列方式执行 begin p1; p2; p3; end; 它们是串行的。 我们可以使用DBMS_SCHEDULER包来间接实现并行执行,具体用法如下: begin dbms_scheduler.create_job(job_name => dbms_scheduler.generate_jo... 阅读详情

相关推荐

PL/SQL存储过程语法教程

1, 在开发程序中,为了一个特定的业务功能,会向数据库进行多次连接关闭(连接和关闭是很耗费资源), 需要对数据库进行多次I/O读写,性能比较低。在数据库中实现基本上不会出现错误,在程序中操作可能会存在错误.(如果在数据库中操作数据,可以有一定的日志恢复等功能.)用于临时存储一个查询返回的多行数据(结果集,类似于Java的Jdbc连接返回的ResultSet集合),通过遍历游标,可以逐行访问处理该结果集的数据。之前我们编写的PLSQL程序可以进行表的操作,判断,循环逻辑处理的工作,但无法重复调用.

qq_43718377的博客 2249

PLSQL——存储过程、函数

1.概述ORACLE提供可以把PL/SQL程序存储在数据库中,并可以在任何地方来运行它。这样就叫存储过程或函数。存储过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储在数据库中,并通过输入、输出参数或输入/输出参数与其调用者交换信息。总向调用者返回数据,而则不返回数据。...

m0_72036727的博客 5438

PL/SQL执行带输出参数的存储过程的方法

打开PL/SQL 命令窗口: 将输出参数声明成一个变量,执行存储过程的时候,在变量前面加冒号代表应用,如下用例所示: SQL> var c varchar2(10); SQL> exec SP_ADAPTERALARM (-1,'',2,10001,'The CPU used is very high!',:c)   经典推荐:超炫Swing折叠菜单,完全模仿win xp左边折叠伸缩

在技术的广袤天地里,本博客如精准罗盘。剖析前沿科技,深掘代码奥秘,以精炼笔触,带您穿越复杂技术迷宫,速达知识彼岸。 4883

PLSQL编程详细

用于临时存储一个查询返回的多行数据(结果集,类似于Java的Jdbc连接返回的ResultSet集合),通过遍历游标,可以逐行访问处理该结果集的数据。游标的使用方式:声明--->打开--->读取--->关闭。

clover_oreo的博客 9185

ORACLE 第 6 章 PL/SQL存储过程

在PL/SQL中,可以将最近的隐式游标引用为SQL游标,它始终具有%FOUND,%ISOPEN,%NOTFOUND和%ROWCOUNT等属性。在包中创建的子程序是打包的子程序。如果INSERT,UPDATE或DELETE语句影响一行或多行,或老兄SELECT INTO语句返回一行或多行,则返回TRUE,否则返回FALSE。如果调用一个函数,只需要传递所需的参数和函数名,如果函数返回一个值,那么可以存储返回的值。可以命名一个游标,以便在程序中引用它来获取和处理SQL语句返回的行,一次处理一个(行)。

2012年开始工作,全栈开发老兵,目前已是一个老师,分享这么多年的心得体会 4414

执行存储过程/存储过程执行SQL语句

外部工具中执行存储过程(调试一下该存储过程效果一样) EXEC APP022.APP_OXYGEN_PRO.PRO_UPDATE_ID(‘hellowhat’); 存储过程执行sql str:=‘select * from table’; EXECUTE IMMEDIATE STR; ...

weixin_36944798的博客 1万+

存储过程很慢单独执行很快_提高存储过程执行效率

曾经发现这样一种情况,存储过程中的语句提取出来单独执行很快,但在存储过程执行就很慢。----************* 存储过程中的语句,变量为 avc_acct_monthSELECT 2101,B.BUNDLE,COUNT( Distinct CASE WHEN (substr(FAMILY_NUM_CREATE_T,1,6)<=&avc_acct_month AND SUB...

weixin_32095133的博客 2601

oracle如何查看存储过程执行计划,查看存储过程执行计划

存储过程没有执行计划,查看的是存储过程SQL语句的执行计划,这里用10046来看----------------------------------------------------创建存储过程CreateOrReplaceProcedureLee_Xc(EnoNumber)IsBeginSelectEmpno,Ename,DnameFromEmp,DeptWhereEmp.Deptn...

weixin_42501711的博客 1852

MySQL查看执行表的存储过程

将替换为目标存储过程的实际名称。这将返回一个结果集,其中包含了存储过程的定义和相关的SQL语句。

牛肉胡辣汤 1992

Hibernate调用执行存储过程

/**   * 执行存储过程的方法(存储过程仅仅支持输入参数的使用,并且无返回值的以后扩展信息)   *   * @param procedureName   *            存储过程的名称   * @param paramList   *            备注:Map paramList 其中String 参数: Object输入的参数对象   *

天蓝蓝,水清清,云飘飘 1237

存储过程执行快,程序调用执行慢的问题

源博客地址https://blog.csdn.net/pgbiao/article/details/22388945 其他参考:参数探测(Parameter Sniffing)影响存储过程执行效率解决方案 这篇文章对参数嗅探问题作了很详细的研究https://www.cnblogs.com/lyhabc/articles/3222179.html 这两天遇到一个问题令人比较郁闷,一个大概120行左右的存储过程SQL Server的查询分析器里面执行, 速度非常理想,1秒不到,即可筛选抓取到大概...

徐本锡的专栏 121万+

执行存储过程

执行存储过程 SQL Server 2012 其他版本 3(共 3)对本文的评价是有帮助 - 评价此主题 本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQLSQL Server 2012执行存储过程。 有两种不同方法执行存储过程

Better Thinker 1521

存储过程很慢单独执行很快_DB2存储过程执行慢问题故障处理

其实这个问题是以前同一个客户遇见的问题,当时一个工程师解决后记录的过程如下:应用同事反映但是对应到执行存储过程执行2,3个小时了,还没出来结果。存储过程主要是执行一条update sql语句,单独将语句拿出来,clp命令行执行很快,2-3s即可执行完成。执行的SP:call pdw.P_OCS_ACTIVE_UPDATE('20120304',?)存储过程主要业务SQL:/**********...

weixin_39719427的博客 2212

在ASP中执行存储过程

 以下是执行存储过程的例子 set conn=server.createobject("adodb.connection")  OK constr="Driver={Microsoft ODBC for Oracle};Server=yang11;Uid=yangbc2;Pwd=yang9812;"   OK constr="Provider=OraOLEDB.Oracle.1;Pas

yangbc的专栏 1472

SQLServer存储过程执行计划

SELECT * FROM sys.[syscacheobjects] 查看当前缓存的执行计划 如果执行存储过程时成功通过解析阶段,则 Microsoft SQL Server 查询优化器将分析存储过程中的 Transact-SQL 语句并创建一个执行计划。执行计划描述执行存储过程的最快方法,所依据的信息包括: 1.表中的数据量。 2.表的索引的存在及特征,以及数据在索引列中的分布。 3.WHE...

阿甘兄 2891

创建自动执行存储过程

GPS平台、网站建设、软件开发、系统运维,找森大网络科技! https://cnsendnet.taobao.com 来自森大科技官方博客 http://www.cnsendblog.com/index.php/?p=1875 每次 SQL Server 启动时,将执行标记为要自动执行存储过程。如果有需要定期执行的操作,或者有作为后台进程运行的存储过程,并希望该存储过程在所有时间都处于运行状态,此种方法非常有用。自动执行存储过程的另一个用途是使该存储过程完成 tempdb 中的系统或维护任务,如创建一个全

森大科技的博客 643

SQLServer中各种存储过程创建及执行方式

一. 什么是存储过程 系统存储过程是系统创建的存储过程,目的在于能够方便的从系统表中查询信息或完成与更新数据库表相关的管理任务或其他的系统管理任务。系统存储过程主要存储在master数据库中,以“sp”下划线开头的存储过程。尽管这些系统存储过程在master数据库中,但我们在其他数据库还是可以调用系统存储过程。有一些系统存储过程会在创建新的数据库的时候被自动创建在当前数据库中。 二. 存储过程...

lp_cq242的博客 6500

mysql存储过程的编写与执行_MySQL存储过程的使用、执行和创建教程

使用存储过程使用存储过程需要知道如何执行(运行)它们。存储过程执行远比其定义更经常遇到,因此,我们将从执行存储过程开始介绍。然后再介绍创建和使用存储过程执行存储过程MySQL存储过程执行为调用,因此MySQL执行存储过程的语句为 CALL 。 CALL 接受存储过程的名字以及需要传递给它的任意参数。请看以下例子:输入:call productpricing(@pricelow,@price...

weixin_30282917的博客 921
上一篇: spool用法小结
下一篇: ORACLE常用查询命令
ikikik2002
博客等级 码龄18年 7粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值