MySQL 连接器/C++ 1.1 开发人员指南 / 第 7 章连接器/C++ 教程 /
7.2 使用语句对象调用存储过程
可以使用
Statement
或
PreparedStatement
对象调用存储过程。本节介绍如何使用Statement
对象调用存储过程。要了解如何使用PreparedStatement
对象,请参阅
第 7.3 节 “使用对象调用存储过程PreparedStatement
”。
以下列表描述了您可以构造和调用的不同类型的存储过程,以及说明每种类型的示例存储过程:
-
不返回结果的存储过程。例如,这样的存储过程可以记录非关键信息,或者以直接的方式更改数据库数据。
以下过程将一个国家/地区添加到
world
数据库,但不返回结果:CREATE PROCEDURE add_country (IN country_code CHAR(3), IN country_name CHAR(52), IN continent_name CHAR(30)) BEGIN INSERT INTO Country(Code, Name, Continent) VALUES (country_code, country_name, continent_name); END;
-
一种使用输出参数返回一个或多个值的存储过程。例如,这样的过程可以指示成功或失败,或者检索和返回数据项。
以下过程使用输出参数返回指定国家/地区或大陆或整个世界的人口:
CREATE PROCEDURE get_pop (IN country_name CHAR(52), OUT country_pop BIGINT) BEGIN SELECT Population INTO country_pop FROM Country WHERE Name = country_name; END;
CREATE PROCEDURE get_pop_continent (IN continent_name CHAR(30), OUT continent_pop BIGINT) BEGIN SELECT SUM(Population) INTO continent_pop FROM Country WHERE Continent = continent_name; END;
CREATE PROCEDURE get_pop_world (OUT world_pop BIGINT) BEGIN SELECT SUM(Population) INTO world_pop FROM Country; END;
-
返回一个或多个结果集的存储过程。该过程可以执行一个或多个查询,每个查询返回任意数量的行。您的应用程序遍历每个结果集以显示、转换或以其他方式处理其中的每一行。
此过程返回几个结果集:
CREATE PROCEDURE get_data () BEGIN SELECT Code, Name, Population, Continent FROM Country WHERE Continent = 'Oceania' AND Population < 10000; SELECT Code, Name, Population, Continent FROM Country WHERE Continent = 'Europe' AND Population < 10000; SELECT Code, Name, Population, Continent FROM Country WHERE Continent = 'North America' AND Population < 10000; END;
手动输入和测试存储过程以确保它们对您的 C++ 应用程序可用。(
world
在创建它们之前选择默认数据库。)您现在可以开始使用调用存储过程的 Connector/C++ 编写应用程序。