INTSAMPLES-97 - Add Postgres Stored Procedure Sample
This commit is contained in:
93
intermediate/stored-procedures-postgresql/README.md
Normal file
93
intermediate/stored-procedures-postgresql/README.md
Normal file
@@ -0,0 +1,93 @@
|
||||
Spring Integration - Stored Procedure Example - PostgreSQL
|
||||
================================================================================
|
||||
|
||||
# Overview
|
||||
|
||||
This example provides a simple example using the *Stored Procedure Outbound Gateway*
|
||||
adapter. This example will call 1 PostgreSQL **Stored Function** and 1 **Stored Procedure**.
|
||||
|
||||
The second procedure returns a **ResultSet**.
|
||||
|
||||
# Setup
|
||||
|
||||
## Maven
|
||||
|
||||
Please make sure you have *Maven* set up and that the project builds successfully using `mvn clean package`.
|
||||
|
||||
## PostgreSQL
|
||||
|
||||
Please ensure that you can connect to a running instance of a *PostgreSQL server*. The sample was tested using **PostgreSQL v9.2.1**.
|
||||
|
||||
### Required Table
|
||||
|
||||
```SQL
|
||||
CREATE TABLE "COFFEE_BEVERAGES"
|
||||
(
|
||||
"ID" integer NOT NULL,
|
||||
"COFFEE_NAME" text,
|
||||
"COFFEE_DESCRIPTION" text,
|
||||
CONSTRAINT "COFFEE_BEVERAGES_pkey" PRIMARY KEY ("ID")
|
||||
)
|
||||
```
|
||||
|
||||
### Sample Data
|
||||
|
||||
```SQL
|
||||
INSERT INTO "COFFEE_BEVERAGES" ("ID", "COFFEE_NAME", "COFFEE_DESCRIPTION") VALUES (1, 'Espresso', 'Espressos keep developers going in the morning. There are never enough of them.');
|
||||
INSERT INTO "COFFEE_BEVERAGES" ("ID", "COFFEE_NAME", "COFFEE_DESCRIPTION") VALUES (2, 'Cappuccino', 'For the finer moments. Wrap your espresso in a tasty layer of foam.');
|
||||
INSERT INTO "COFFEE_BEVERAGES" ("ID", "COFFEE_NAME", "COFFEE_DESCRIPTION") VALUES (3, 'Mocha', 'Mmmmh, chocolate.');
|
||||
INSERT INTO "COFFEE_BEVERAGES" ("ID", "COFFEE_NAME", "COFFEE_DESCRIPTION") VALUES (4, 'Latte', 'If you are more into milk than into foam.');
|
||||
```
|
||||
|
||||
### Stored Procedures
|
||||
|
||||
Please create the following Stored Procedure/Function:
|
||||
|
||||
```SQL
|
||||
CREATE OR REPLACE FUNCTION find_all_coffee_beverages()
|
||||
RETURNS refcursor AS
|
||||
$BODY$
|
||||
DECLARE
|
||||
ref refcursor;
|
||||
BEGIN
|
||||
OPEN ref FOR SELECT "ID", "COFFEE_NAME", "COFFEE_DESCRIPTION" FROM "COFFEE_BEVERAGES";
|
||||
RETURN ref;
|
||||
END;
|
||||
$BODY$
|
||||
LANGUAGE plpgsql VOLATILE
|
||||
COST 100;
|
||||
```
|
||||
|
||||
```SQL
|
||||
CREATE OR REPLACE FUNCTION find_coffee(coffee_name integer)
|
||||
RETURNS character varying AS
|
||||
$BODY$
|
||||
declare
|
||||
description character varying;
|
||||
begin
|
||||
SELECT into description "COFFEE_DESCRIPTION" from "COFFEE_BEVERAGES" where "ID"=coffee_name;
|
||||
return description;
|
||||
end
|
||||
$BODY$
|
||||
LANGUAGE plpgsql VOLATILE
|
||||
COST 100;
|
||||
```
|
||||
### Configure the DataSource
|
||||
|
||||
Please configure the necessary credentials in order to connect to your database in **/src/main/resources/META-INF/spring/integration/spring-integration-context.xml**. The default setting expects a database **integration** to run on localhost with a usersname of **postgres** and a password of **postgres**.
|
||||
|
||||
# Run the Sample
|
||||
|
||||
* running the "Main" class from within STS (Right-click on Main class --> Run As --> Java Application)
|
||||
* or from the command line:
|
||||
- mvn package
|
||||
- mvn exec:java
|
||||
|
||||
* Follow the screen (command line) instructions.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
For help please take a look at the Spring Integration documentation:
|
||||
|
||||
http://www.springsource.org/spring-integration
|
||||
|
||||
Reference in New Issue
Block a user