这篇文章主要介绍了Mybatis调用oracle存储过程调用带参数的方法介绍,需要的朋友可以参考下
1:调用无参数的存储过程
2:有参数的存储过程调用:
2.1存储过程的创建:
3:存储过程的结果集调用。
以上就是Mybatis调用oracle存储过程调用带参数方法讲解的详细内容更多请关注php中文网其它相关文章!
我想问在pb中调用oracle的存储进程能否姠存储进程传送pb中定义的变量如何传送。
如我在pb中定义了a,b,c三个变量,在oracle中有存储进程sp_get(d,e,f).那么当调用存储进程时给sp_get传送常量是没有问题嘚,但能否给sp_get传送pb中的a,b,c三个变量呢如果能,怎样传送呢谢谢了!
本篇文章来源与时代旭日(原晓通)培训部资料库。
ORACLE中有函数与存储进程其调用规则类似。下例中的函数除前往一个值外功能与上面的存储进程基本一样。在本例中调用一个前往一个系统日期值嘚函数。
4. 关闭函数并显示函数前往的结果
通过前面的例子咱们能够看出:不同的系统支持的存储进程的形式和功能都有一定的差异嘫则它们在中的定义和执行都一样。存储进程能够前往一组值也能够前往一个结果集,用户能够将存储进程前往的数据直接拿来措置惩罰也能够传给(运用外部数据源的)。
然则注意的是如果在ORACLE中定义了OUT类型的变量是不能作为参数传入的!!!
在调用存储过程时主程序的实際参数只能是一个变量,而不能是常量或表达式在存储过程中,参数变量只能被赋值而不能将其用于赋值在存储过程中必须给输出变量至少赋值一次。
定义一个输入、输出参数变量兼有以上两者的功能。在调用存储过程时主程序的实际参数只能是一个变量,而不能昰常量或表达式DEFAULT 关键字为可选项,用来设定参数的默认值在存储过程中,变量接收主程序传递的值同时可以参加赋值运算,也可以對其进行赋值在存储过程中必须给变量至少赋值一次。 如果省略IN、OUT或IN OUT则默认模式是IN。 【训练1】 编写给雇员增加工资的存储过程CHANGE_SALARY通过IN類型的参数传递要增加工资的雇员编号和增加的工资额。 步骤1:登录SCOTT账户
步骤2:在SQL*Plus输入区中输入以下存储过程并执行: Sql代码
执行结果为: Sql代码
步骤3:调用存储过程,在输入区中输入以下语句并执行: Sql代码
显示结果为: Sql代码
说明:从执行结果可以看到雇员SCOTT的工资已由原来嘚3000改为3080。 参数的值由调用者传递传递的参数的个数、类型和顺序应该和定义的一致。如果顺序不一致可以采用以下调用方法。如上例执行语句可以改为: EXECUTE CHANGE_SALARY(P_RAISE=>80,P_EMPNO=>7788);
可以看出传递参数的顺序发生了变化,并且明确指出了参数名和要传递的值=>运算符左侧是参数名,右侧是参数表達式这种赋值方法的意义较清楚。 【练习1】创建插入雇员的存储过程INSERT_EMP并将雇员编号等作为参数。 在设计存储过程的时候也可以为参數设定默认值,这样调用者就可以不传递或少传递参数了
【训练2】 调用存储过程CHANGE_SALARY,不传递参数使用默认参数值。 在SQL*Plus输入区中输入以下命令并执行: Sql代码
显示结果为: Sql代码
说明:在存储过程的调用中没有传递参数而是采用了默认值7788和10,即默认雇员号为7788增加的工资为10。
【训练3】 使用OUT类型的参数返回存储过程的结果 步骤1:登录SCOTT账户。
步骤2:在SQL*Plus输入区中输入并编译以下存储过程: Sql代码
执行结果为: Sql代码
步驟3:输入以下程序并执行: Sql代码
显示结果为: Sql代码
1. 雇员总人数为:14
说明:在存储过程中定义了OUT类型的参数P_TOTAL在主程序调用该存储过程时,傳递了参数V_EMPCOUNT在存储过程中的SELECT...INTO...语句中对P_TOTAL进行赋值,赋值结果由V_EMPCOUNT变量带回给主程序并显示
以上程序要覆盖同名的EMP_COUNT存储过程,如果不使用OR REPLACE选項就会出现以下错误: Sql代码
【练习2】创建存储过程,使用OUT类型参数获得雇员经理名 【训练4】 使用IN OUT类型的参数,给电话号码增加区码 步骤1:登录SCOTT账户。
步骤2:在SQL*Plus输入区中输入并编译以下存储过程: Sql代码
执行结果为: Sql代码
步骤3:输入以下程序并执行: Sql代码
显示结果为: Sql代碼
说明:变量V_HPONE_NUM既用来向存储过程传递旧电话号码也用来向主程序返回新号码。新的号码在原来基础上增加了区号0755和- 创建和删除存储函數
其中,参数是可选的但只能是IN类型(IN关键字可以省略)。
在定义部分的RETURN 数据类型用来表示函数的数据类型,也就是返回值的类型此部汾不可省略。
在可执行部分的RETURN(表达式)用来生成函数的返回值,其表达式的类型应该和定义部分说明的函数返回值的数据类型一致在函數的执行部分可以有多个RETURN语句,但只有一个RETURN语句会被执行一旦执行了RETURN语句,则函数结束并返回调用环境
一个存储函数在不需要时可以刪除,但删除的人应是函数的创建者或者是拥有DROP ANY PROCEDURE系统权限的人其语法如下: DROP FUNCTION 函数名;
重新编译一个存储函数时,编译的人应是函数的创建者或者拥有ALTER ANY PROCEDURE系统权限的人重新编译一个存储函数的语法如下: ALTER PROCEDURE 函数名 COMPILE;
函数的调用者应是函数的创建者或拥有EXECUTE ANY PROCEDURE系统权限的人,或是被函数的拥有者授予了函数执行权限的账户函数的引用和存储过程不同,函数要出现在程序体中可以参加表达式的运算或单独出现在表達式中,其形式如下:
【训练1】 创建一个通过雇员编号返回雇员名称的函数GET_EMP_NAME 步骤1:登录SCOTT账户。
步骤2:在SQL*Plus输入区中输入以下存储函数并编譯: Sql代码
步骤3:调用该存储函数输入并执行以下程序: Sql代码
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。