6.5.2 存储过程的调用
存储过程创建后,在应用程序或其他存储过程中可以被多次调用。调用时使用的是call语句。具体语句格式为:
语法说明:
存储过程名:存储过程名必须是一个已经存在的存储过程。可以通过在存储过程名前添加数据库限定名,调用其他数据库中的存储过程,从而访问其他数据库中的数据。
参数:调用存储过程语句时的参数与定义存储过程时的参数个数和类型应一致。
【例6.27】调用例6.24定义的存储过程proc_in。
问题分析:
in类型参数只能将值带入存储过程,无法带出存储过程中计算后得到的值,定义局部变量p在存储过程外赋值为5,通过调用存储过程将p值传递给存储过程参数n,在存储过程内部n的值被改变,而p的值不发生变化。
【例6.28】调用例6.25定义的存储过程proc_out。
问题分析:
输入类型参数只能将数据从存储过程外带入存储过程,而输出类型参数,只能将存储过程内处理获得的数据带给调用者。外部局部变量p的值传给in类型变量m,无论m值如何变化,外部变量p的值不发生变化。变量q的初始值10传给存储过程输出参数n,在存储过程内部,n的初始值是null,执行语句,n的值被改变,则局部变量q的值随之发生变化。
执行结果如下:
【例6.29】调用例6.26定义的存储过程proc_inout。
问题分析:
inout类型参数既能从外部程序带入参数值,也能将存储过程的计算结果返回给调用者。
外部局部变量p的值传给存储过程参数n,在存储过程内部执行语句,n的值被改变,外部变量p的值也随之发生变化。
执行结果如下:
【例6.30】定义存储过程,实现删除指定部门名称的部门信息,并调用。
说明:
该存储过程有一个输入类型参数,关键字in省略。过程体只包括一个查询语句,省略begin…end。
【例6.31】定义存储过程,显示所有员工的部门名称、员工编号、员工姓名和员工职位,并调用。
说明:该存储过程无参数,调用时一对圆括号可省略。
【例6.32】定义存储过程,返回所有员工数量,并调用。
方法一:使用输出参数带回所需的值
说明:
参数类型为out,存储过程将查询结果通过参数n返回给调用程序。
方法二:
说明:方法二执行存储过程直接返回一个结果集,集合中只有一行一列。
【例6.33】根据给定的部门名称显示该部门员工数量。
【例6.34】根据部门名称显示所有该部门员工信息,并返回该部门人数。
说明:
第一个参数类型in可省略,由调用程序给定查找的部门名称,第二参数为out类型参数,存储过程将查询结果返回给调用程序。
【例6.35】根据部门名称和员工职位显示员工信息。
【例6.36】根据给定部门信息,完成部门信息录入。