-
2016-06-06 18:58:06
同C/C++/Java等语言编写的代码一样,用SQL语言编写的存储过程也需要进行充分的测试。本文以实际的MySQL存储过程为例,介绍存储过程测试的整个流程。
在本文中,需要被测试的存储过程如下:
drop procedure if exists pr_dealtestnum; delimiter // create procedure pr_dealtestnum ( in p_boxnumber varchar(30), out p_result int, out p_outusertype int ) pr_dealtestnum_label:begin declare p_boxnumcount int; declare p_usertype int; set p_boxnumcount = 0; set p_usertype = 0; set p_outusertype = 0; select count(*) into p_boxnumcount from tb_testnum where boxnumber=p_boxnumber; if p_boxnumcount > 0 then begin select usertype into p_usertype from tb_testnum where boxnumber=p_boxnumber; set p_outusertype = (p_usertype+1)/10*10; set p_result = 0; end; else begin set p_result = 1; end; end if; leave pr_dealtestnum_label; end; // delimiter ; select 'create procedure pr_dealtestnum ok';
在存储过程中使用到的表tb_testnum如下:
drop table if exists tb_testnum; create table tb_testnum ( boxnumber varchar(30) not null, usertype int not null ); create unique index idx1_tb_testnum on tb_testnum(boxnumber);
其中,usertype字段的值必须要大于1。
对存储过程进行测试大致遵循以下步骤:
第一步,按照存储过程的输入和输出参数设置正确的调用样式。第二步,根据调用时的输入参数值来向相关的表中插入测试数据。
第三步,执行第一步中的存储过程调用语句,查看执行结果是否正确,并根据该结果来修改存储过程。
下面具体进行说明。
第一步
就本存储过程pr_dealtestnum而言,根据程序逻辑,我们可设置如下调用语句:call pr_dealtestnum('2344273520',@1,@2);select @1,@2; call pr_dealtestnum('2344273521',@1,@2);select @1,@2; call pr_dealtestnum('2344273522',@1,@2);select @1,@2; call pr_dealtestnum('2344273523',@1,@2);select @1,@2; call pr_dealtestnum('2344273524',@1,@2);select @1,@2; call pr_dealtestnum('2344273525',@1,@2);select @1,@2; call pr_dealtestnum('2344273526',@1,@2);select @1,@2; call pr_dealtestnum('2344273527',@1,@2);select @1,@2; call pr_dealtestnum('2344273528',@1,@2);select @1,@2; call pr_dealtestnum('2344273529',@1,@2);select @1,@2; call pr_dealtestnum('2344273530',@1,@2);select @1,@2; call pr_dealtestnum('2344273531',@1,@2);select @1,@2; call pr_dealtestnum('2344273532',@1,@2);select @1,@2; call pr_dealtestnum('2344273533',@1,@2);select @1,@2; call pr_dealtestnum('2344273534',@1,@2);select @1,@2; call pr_dealtestnum('15696192523',@1,@2);select @1,@2;
大家还可以设置更多的调用语句,其目的是为了对存储过程进行更加充分的测试。
第二步
根据第一步设置的调用语句,兼顾程序逻辑,我们可执行如下语句向表tb_testnum中插入数据:insert into tb_testnum(boxnumber,usertype) values('2344273520',1); insert into tb_testnum(boxnumber,usertype) values('2344273521',3); insert into tb_testnum(boxnumber,usertype) values('2344273522',4); insert into tb_testnum(boxnumber,usertype) values('2344273523',5); insert into tb_testnum(boxnumber,usertype) values('2344273524',7); insert into tb_testnum(boxnumber,usertype) values('2344273525',8); insert into tb_testnum(boxnumber,usertype) values('2344273526',9); insert into tb_testnum(boxnumber,usertype) values('2344273527',10); insert into tb_testnum(boxnumber,usertype) values('2344273528',11); insert into tb_testnum(boxnumber,usertype) values('2344273529',13); insert into tb_testnum(boxnumber,usertype) values('2344273530',14); insert into tb_testnum(boxnumber,usertype) values('2344273531',15); insert into tb_testnum(boxnumber,usertype) values('2344273532',26); insert into tb_testnum(boxnumber,usertype) values('2344273533',52); insert into tb_testnum(boxnumber,usertype) values('2344273534',87);
第三步
在向表tb_testnum中插入数据之后,我们开始逐条执行第一步中的存储过程调用语句,以验证存储过程代码逻辑的正确性。首先执行“call pr_dealtestnum(‘2344273520’,@1,@2);select @1,@2;”,结果如下:
mysql> call pr_dealtestnum('2344273520',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 2 | +------+------+ 1 row in set (0.00 sec)
我们来分析执行结果是否是我们想要的。将入参“2344273520”带入存储过程中,首先是“select count(*) into p_boxnumcount from tb_testnum where boxnumber=’2344273520’;”,此时“boxnumcount”变量的值为1(因为之前执行过语句“insert into tb_testnum(boxnumber,usertype) values(‘2344273520’,1);”);接着,程序进入“if p_boxnumcount > 0 then”分支,执行“select usertype into p_usertype from tb_testnum where boxnumber=’2344273520’;”语句,“p_usertype”变量的值为1;然后,执行“set p_outusertype = (1+1)/10*10;”语句,即“p_outusertype”变量的值为“2/10*10”,进一步计算为“0*10”,最终结果为0;最后,执行“set p_result = 0;”语句,“p_result”变量的值为0。因此,最终两个输出参数的值都应该为0。
但是,实际的结果是,两个输出参数的值分别为0和2,是哪里出了问题呢?我们重点分析“(1+1)/10*10”的结果,将之在MySQL中单独执行,结果如下:
mysql> select (1+1)/10*10; +-------------+ | (1+1)/10*10 | +-------------+ | 2.0000 | +-------------+ 1 row in set (0.00 sec) mysql> select (1+1)/10; +----------+ | (1+1)/10 | +----------+ | 0.2000 | +----------+ 1 row in set (0.00 sec)
我们可以看到,“(1+1)/10”的结果并不是我们预想的0,而是0.2,看来,在MySQL中,两个整数相除并不是只取结果的整数部分,而是取了小数点后面的若干位。
那么,如果我们只想要整数部分,应该怎么办呢?此时,可以用floor()函数,即“floor((1+1)/10)”就是取了结果的整数部分,如下所示:
mysql> select floor((1+1)/10); +-----------------+ | floor((1+1)/10) | +-----------------+ | 0 | +-----------------+ 1 row in set (0.00 sec
现在,我们据此修改存储过程,修改之后如下所示:
drop procedure if exists pr_dealtestnum; delimiter // create procedure pr_dealtestnum ( in p_boxnumber varchar(30), out p_result int, out p_outusertype int ) pr_dealtestnum_label:begin declare p_boxnumcount int; declare p_usertype int; set p_boxnumcount = 0; set p_usertype = 0; set p_outusertype = 0; select count(*) into p_boxnumcount from tb_testnum where boxnumber=p_boxnumber; if p_boxnumcount > 0 then begin select usertype into p_usertype from tb_testnum where boxnumber=p_boxnumber; set p_outusertype = floor((p_usertype+1)/10)*10; set p_result = 0; end; else begin set p_result = 1; end; end if; leave pr_dealtestnum_label; end; // delimiter ; select 'create procedure pr_dealtestnum ok';
再次执行“call pr_dealtestnum(‘2344273520’,@1,@2);select @1,@2;”,结果如下:
mysql> call pr_dealtestnum('2344273520',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 0 | +------+------+ 1 row in set (0.00 sec)
此时的结果就是我们想要的。
我们可以继续执行在第一步中设置的其它存储过程调用语句,结果如下:
mysql> call pr_dealtestnum('2344273521',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 0 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273522',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 0 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273523',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 0 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273524',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 0 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273525',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 0 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273526',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 10 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273527',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 10 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273528',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 10 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273529',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 10 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273530',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 10 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273531',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 10 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273532',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 20 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273533',@1,@2);select @1,@2; Query OK, 1 row affected (0.00 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 50 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('2344273534',@1,@2);select @1,@2; Query OK, 1 row affected (0.01 sec) +------+------+ | @1 | @2 | +------+------+ | 0 | 80 | +------+------+ 1 row in set (0.00 sec) mysql> call pr_dealtestnum('15696192523',@1,@2);select @1,@2; Query OK, 1 row affected (0.01 sec) +------+------+ | @1 | @2 | +------+------+ | 1 | 0 | +------+------+ 1 row in set (0.00 sec)
可以看到,修改之后的存储过程的执行结果就是正确的了。最后一条调用语句“call pr_dealtestnum(‘15696192523’,@1,@2);select @1,@2;”中,因为输入参数中的“15696192523”对应的数据在tb_testnum表中不存在,因此程序进入了“else”分支,“p_result”变量的值就为1,而“p_outusertype”变量的值为0。
总结
存储过程的测试方法和用其它编程语言编写的程序的测试方法是一样的,都需要我们在充分理解程序逻辑的基础上构造完整的、多样化的测试用例,并在测试的过程中根据测试的结果来修改程序,以达到我们预期的结果,并最终满足用户的需求。需要强调的是,在软件开发过程中,我们测试代码的时间,很可能会多余我们编写代码的时间,大家一定要耐着性子忍受测试代码过程中的“孤独感”。
更多相关内容 -
Oracle 存储过程测试
2018-09-04 16:56:19如果过程单步执行到某行后,再单步执行的时候,存过就退出,那么错误就在该行的下一行。 代码执行到24行,在往下执行时,直接转到exception的地方,也就是异常处理的部分。 这说明我们代码中的...方法/步骤
-
首先在PL/SQL的左侧资源栏中展开Procedures项(图中位置1),然后再其上面的搜索框中(图中位置2)输入存过名称的关键词,按回车键搜索要调试的存过,不停的回车,直到找到想要调试的存过。
-
找到想要调试的存过,左键单击选中该存过(图中位置1),然后右键单击该存过,从弹出菜单中选择“Test”项(图中位置2)。
-
单击“Test”后,PL\SQL会打开调试界面,图中位置1的按钮就是开始调试的按钮,在调试之前要填写存过的参数,位置2就是填写参数的地方,如果有多个参数,会有多行参数框,按参数名填写相应的参数即可。
-
填写完参数,单击开始调试按钮后,调试的界面会发生一些变化。图中位置1的变化,说明存过已经处于执行状态,别人不能再编译或者执行。位置2的按钮就是执行按钮,单击这个按钮存过会执行完成或者遇到bug跳出,否则是不会停下来的,调试时不会用这个按钮的。位置3的按钮才是关键——单步执行,就是让代码一行一行的执行,位置4的按钮是跳出单步执行,等待下一个指令。
-
单击“单步执行”,存过开始单步执行。界面中每一次执行的代码会高亮显示(图中位置1),如果想要看某个变量具体的值,就在位置2的地方输入该变量名,然后变量的值会显示在位置3的地方。
-
调试的时候,每一次单步执行的时候要记一下执行代码的行数,图中位置3的数字就是当前执行代码的行数,就是第几行。如果过程单步执行到某行后,再单步执行的时候,存过就退出,那么错误就在该行的下一行。
-
代码执行到24行,在往下执行时,直接转到exception的地方,也就是异常处理的部分。
-
这说明我们代码中的错误在24和25行上,我们打开存过,浏览到24行和25行附近,发现25行和24行使用了两个变量,记住那两个变量。重新开始调试过程。
-
单步的执行时候把刚才那两个变量名填写到变量查看框,一边观察变量值变化,一边单步执行,执行到24行的时候,发现一个变量已经有值了,而另一个变量的值为null。错误原因明朗了吧?就是变量没有赋值或者初始话,给该变量赋值后存过就不报错了。
-
-
存储过程测试经验集(包括功能和性能)
2009-11-01 14:02:30存储过程测试经验集主要内容为:1、讲述如何对存储过程进行功能测试2、如何对存储过程进行性能测试3、存储过程测试过程中问题归类。包括一些实际范例。 -
plsql中存储过程的调试方法
2021-05-04 01:10:18本文主要介绍如何在PL / SQL Developer中调试oracle存储过程. 1打开PL / SQL Developer. 如果计算机上安装了PL / SQL Developer,请打开PL / SQL Developer界面并输入用户名. 密码和主机名与程序的web.config中...本文主要介绍如何在PL / SQL Developer中调试oracle存储过程. 1打开PL / SQL Developer. 如果计算机上安装了PL / SQL Developer,请打开PL / SQL Developer界面并输入用户名. 密码和主机名与程序的web.config中配置的相同. 单击确定. 查找包含需要调试的存储过程的程序包. 右键单击包主体(例如PACK_ACTIVITY),然后在弹出菜单中选择[查看],以获取包中的所有存储过程及其代码. 2添加调试信息以便能够单步执行若要跟踪存储过程,您需要向其所在的程序包中添加调试信息. 右键单击要调试的程序包. 在弹出菜单中选择[添加调试信息]. 这会将调试信息添加到程序包主体中. 3,调试存储过程现在,所有准备工作都已完成sql调试存储过程,可以调试和跟踪存储过程. 选择需要调试的存储过程. 右键单击并从弹出菜单中选择[测试]. 进入测试窗口. 测试窗口包含自动生成以测试存储过程的代码. 当然,您也可以自己添加和修改代码. 我们目前仅用于调试存储过程. 自动生成的代码就足够了.
请按照以下步骤进行调试. 1)添加存储过程所需的参数. 我们项目中的大多数存储过程都需要参数. 可以在测试窗口的右下方输入参数. 例如,GetPanNO_New需要输入参数v_employeeid. 我们输入180. 输出参数是mycursor,它是视图的结果. 您不需要输入任何值. 2开始调试. 单击[调试]菜单> [开始]或按F9进入调试模式. 程序将在开始行停止. 3后续的调试过程遵循熟悉的调试过程. just运行CtrlCtrlR进入CtrlCtrlN N越过CtrlO退出CtrlT或单击调试工具栏上的按钮按下CtrlN后存储过程的源代码,您可以在此窗口中查看过程中的变量值和堆栈. 4)调试完成后,可以查看以下结果. 单击mycursor变量旁边的按钮. 4提示令人沮丧的是,无论SELECT语句多么复杂sql调试存储过程,我们项目中的许多存储过程都是SELECT语句. SELECT语句中有嵌套的子SELECT语句. 它只能用作一行代码. 单步跟踪没有意义.
在这种情况下,我们只能提取子级的SELECT语句,并查看结果. 具体操作如下: 您可以在需要检查的任何过程中检查子SELECT语句时创建一个新的SQL窗口,然后将sub SELECT语句的代码复制到此. SQL窗口并运行它. 查看sub-SELECT语句的结果. 当然,此子SELECT语句也可以调试.
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-154220-1.html
-
plsql创建、测试存储过程
2021-01-03 23:02:331.使用plsql创建存储过程: 在objects视图中右键procedures,选择New... 输入名称,定义入参与出参: OK后在编辑窗口编写存储过程脚本: create or replace procedure TestProcedure(p1 in Number, p2 in Number,...部分参考:https://www.cnblogs.com/seniortestingdev/archive/2012/03/23/2414393.html
1.使用plsql创建存储过程:
在objects视图中右键
procedures
,选择New...
输入名称,定义入参与出参:
OK
后在编辑窗口编写存储过程脚本:create or replace procedure TestProcedure(p1 in Number, p2 in Number,r1 out Number,r2 out Number) is begin r1 := p1+p2 ; r2 := p1-p2 ; end TestProcedure;
编辑框内ctrl+s
保存备份一下脚本。
点击执行按钮或F8
执行即可创建该执行过程:
创建完成后可在左侧Objects窗口内刷新Procedures查看:
注意:如果出现上面创建后的存储过程显示红色的错号,表示登录用户session可能不支持创建存储过程,可重新以SYSDBA
的角色登录:
2.使用plsql验证存储过程
右键存储过程,选择测试:
输入p1, p2,点击执行。 -
plsql 存储过程 测试
2018-08-14 10:09:00plsql 存储过程 测试 CreationTime--2018年8月14日09点54分 Author:Marydon 1.找到要运行的存储过程-->选中-->右键-->测试 2.入参赋值 3.测试 方式一:直接运行 点击窗口... -
存储过程无效
2021-04-30 09:28:33存储过程无效【急】本帖最后由 siruxuan 于 2013-07-11 23:35:11 编辑首先,我创建了一个student表,成功。--DROPTABLESTUDENT;CREATETABLESTUDENT(STUDENT_IDVARCHAR2(40)PRIMARYKEY,STUDENT_NAMEVARCHAR2(40),... -
Oracle 存储过程的调试
2022-01-04 14:06:29Oracle 存储过程的调试 首先,打开PLSQL DEVELOPMENT首先介绍一下,这个软件的各个窗口是用来干什么的。 如图,这是PLSQL工具左侧的窗口,每个窗口的作用,在这里,我们讨论如何在plsql中进行oracle的存储过程的... -
SQL存储过程测试——创建测试用例以及测试结果存储
2010-04-21 21:04:00问题如何创建SQL数据库以及表结构以用来保存测试用例的输入数据和测试结果。设计编写T-SQL脚本,创建一个数据库然后创建一些表用来保存测试用例的输入数据和测试结果。如果想通过SQL认证的方式连接到上一步创建的... -
Mysql、SqlServer、SysBase存储过程自动生成工具
2017-09-22 11:08:183、 让会写存储过程的测试人员,短时间内完成存储过程编写。 4、 可生成现行业主流的不同数据库类型的存储过程。 5、 添加的数据符合项目真实客户环境,数据类型和长度和任意定制化。 7、 后期可任意定制化项目的... -
navicat测试存储过程
2020-12-31 12:23:201. Navicat 下 怎么查看mysql 正在运行的存储过程CREATE DEFINER=`root`@`localhost` PROCEDURE `curdemo`()BEGINDECLARE done INT DEFAULT 0;DECLARE userid,repid INT;DECLARE cur1 CURSOR FOR select u.userid,u.... -
Oracle存储过程_参数
2019-05-27 00:06:361、in模式参数 :属于默认参数 输入模式的参数,用于接收参数,在子程序内部,不能进行修改。 --定义打印的存储过程 CREATE OR REPLACE PROCEDURE println ...--定义测试in模式的存储过程 CREATE OR REPLACE P... -
使用 Dbeaver 编译及执行 Oracle 的存储过程
2021-05-19 14:12:27在“数据库导航”窗口找到需要执行的存储过程,点击右键,选择“Compile Procedure”,编译成功后,在选择“执行存储过程”。 然后在弹出编辑器窗口,按control+return(Ctrl+Enter),或点击编辑器窗口左侧的... -
简单oracle存储过程测试
2016-03-11 11:57:38存储过程 create or replace procedure lcd(lid in number,lname out varchar2) as lock_handler varchar2(128); request_ number; release_ number; begin dbms_lock.allocate_unique('tlcd',lock_handler,3600); -
存储过程在数据库中测试
2016-03-20 21:23:17想必存储过程大家都非常熟悉了,做系统的时候适当的使用存储过程会起到事半功倍的效果,那么判断你写的存储过程是否正确呢?除了写入系统进行运行以外,还有什么方法呢?在数据库中同样可以进行测试,这样就会减少... -
老大说不要在项目中使用存储过程
2022-02-09 15:03:12作为技术人,我不愿看到因为xxx问题而直接拒接xxx技术这种情况,该篇文章是网上多方技术人针对“存储过程到底是值不值得用”这个问题的一些见解 -
sqlserver存储过程调试方法
2018-06-23 16:54:23declare @xx varchar(max); declare @where varchar(100); declare @order varchar(100); declare @page int; declare @row int;...点击调试按钮,即可进入单步调试的界面,可在存储过程里加入断点跟踪。 -
利用PL/SQL Developer 调试 Oracle 存储过程
2018-08-15 10:58:46我们可以用PL/SQL Developer工具来调试复杂的Oracle存储过程 为便于演示,我们定义了test,test1存储过程,如下所示 create or replace procedure test as V_test number; begin V_test := 1; dbms_output.put... -
PL/SQL测试存在CLOB类型入参的存储过程时,入参为NULL
2018-11-05 17:50:09今天有一存储过程调用时报错, 想dubeg下查找问题 . 但是由于一入参为CLOB...所以这样无法直接测试此存储过程。 测试方式: 1、将CLOB 类型的入参存入一张测试表的CLOB类型的字段中。 2、直接写脚本将此参数... -
ORACLE存储过程
2018-11-02 18:14:48oracle存储过程 目录 一.什么是存储过程 二.为什么要写存储过程 三.存储过程基础 1.存储过程结构 2.存储过程语法 3.pl/sql处理存储过程 四.存储过程进阶 1.BUIK COLLECT 2.FORALL 3.pl/sql调试存储过程 ... -
调试存储过程时,传入date类型的参数
2020-02-26 11:26:47 -
MySQL-SQLyog执行存储过程和存储函数等
2018-10-16 13:15:421.打开SQLyog在目录树-函数(存储过程)文件夹上右键,创建函数(创建存储过程) 2.按照MySQL定义函数的规则,新定义一个函数: 3. 然后新建查询编辑器,调用自定义的函数。 命令:SELECT function_name... -
使用Oracle 自带工具查看存储过程执行时的变量值
2018-08-16 12:16:58Oracle 在安装时一般会集成安装多种工具,其中Sql Plus工具 可用于查看存储过程时的变量值。 我们可以采用dbms_output.put_line() 方法来在相应的存储过程中输出变量,通过执行存储过程查看输出。例如,我们... -
查看存储过程报错信息
2018-10-13 15:35:51SELECT * FROM USER_ERRORS WHERE NAME='存储过程名称' -
MySQL的存储函数与存储过程的区别
2022-03-20 15:22:45MySQL存储函数(自定义函数),函数一般用于计算和返回一个值,可以将经常需要使用的计算或功能写...3.存储过程中的语句功能更强大,存储过程可以实现很复杂的业务逻辑,而函数有很多限制,如不能在函数中使用insert,u -
mysql定义一个简单的存储过程及测试
2017-05-09 11:40:15mysql定义一个简单的存储过程及测试 -
java调用存储过程
2021-02-28 14:12:54这里是java调用存储过程。packagecom.lijianbo.procedure;importjava.sql.CallableStatement;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.Types;/***@author*存储过程MySQL*/... -
Navicat 执行存储过程
2021-03-04 06:45:321. 打开navicat选择要创建存储过程的数据库,右击函数。2. 新建函数,创建一个新存储过程3. 添加所要输入的参数,选择模式和类型(!这里并没有默认提供大小)。4. 输入存储过程的定义语句。用例1~~~BEGINSELECT`ord_... -
PLSQL调试存储过程无法进入单步调试
2019-03-14 15:15:48使用PLSQL工具调试存储过程的时候,不管你怎么设置断点,当你点击测试的时候就瞬间执行而过你无法进入单步调试 解决办法: 选中调试的存储过程,右键,看看Add debug information前面如果打了一个小√,这个时候... -
oracle11g plsql调试存储过程卡死的处理技巧
2019-02-16 10:07:14oracle11g plsql调试存储过程卡死的处理技巧