Here is an example.
Enviroments:
GeoServer2.2.2
Database: SQL SERVER 2008
Table tblZip stores geography data, and another table tblCountsByZip stores
counts by zip code.
tblZip has columns: ID, ZIPCODE, GEOM (data type is GEOMETRY ), etc
tblCountsByZip contains columns: ZIPCODE, CountsByZIP. This table’s data are
updated frequently.
I tried to do a description Layer that shows counts by Zip area. I created the
layer using GeoServer SQL view. For security issue and easy of maintainance, I
don’t want to use straight SQL statement in the SQL view. usally I used Stored
Procedure in my applications but stored procedure doesn’t work in GeoServer SQL
view. I tried SQL SERVER table-valued functions and that works.
I created a table-valued function fn_CountsByZip in the database.
Example codes:
CREATEFUNCTION [dbo].[ fn_CountsByZip]
(
-- Add the parameters for the function here
@ZIPCODE varchar(8000),
)
RETURNSTABLE
AS
RETURN
(
-- Add the SELECT statement with parameter references here
SELECT tblZip.ID, tblZip.ZIPCODE, tblZip.GEOM,
tblCountsByZIP .CountsByZip
fromtblZip
join tblCountsByZIP tblZIP.ZIPCODE = tblCountsByZIP.ZIPCODE
--Note: fn_Split is a function that split comma delimited String
joinfn_Split(@ZIPCODE, ',') z tblZIP.ZIPCODE= z.items
)
GO
Example query to select from the function:
Select * from fn_CountsByZip(‘27514,27516’);
I created a map layer using SQL View following the instructions on
http://docs.geoserver.org/stable/en/user/data/database/sqlview.html)
In SQL view, I used the query below and set up a parameter %ZIPCODE%
Select * from fn_CountsByZip(%ZIPCODE%)
You can see that the query is simple in SQL View, since all the logic is
handled in the function fn_CountsByZip.
By doing this, we can get a dynamic map layer of counts by zip code which
fetches real-time data from the database.
Using WMS, we can limit the results by zipcodes, using viewparams such as
&viewparams=ZIPCODE:27514
or &viewparams=ZIPCODE:27514, 27516.
Hope this helps.
Thanks!
Meichun
From: Martin Davis <mtncl...@gmail.com>
To: Andrea Aime <andrea.a...@geo-solutions.it>
Cc: Meichun Li <pcloudy2...@yahoo.com>; "geoserver-users@lists.sourceforge.net"
<geoserver-users@lists.sourceforge.net>
Sent: Thursday, January 31, 2013 1:34 PM
Subject: Re: [Geoserver-users] Passing multiple values to parameters / SQL
Server Stored Procedure
Yes, it would be nice to see this example.
Perhaps these kinds of things could start to be captured in a "SQL Views Tips
and Tricks" section in the User Guide?
On Thu, Jan 31, 2013 at 10:24 AM, Andrea Aime <andrea.a...@geo-solutions.it>
wrote:
On Thu, Jan 31, 2013 at 6:27 PM, Meichun Li <pcloudy2...@yahoo.com> wrote:
>
>
>>Even though I can't use SQL Server Stored Procedure in SQL view, I figured
>>out how to use table-valued functions which worked great! Also,I can pass
>>multi-value parameters to a function.
>
>
>Ah interesting, this is going to be useful for other users, thanks for letting
>us know.
>
>
>Could you share the example of the table valued function?
>
>
>Cheers
>Andrea
>--
>
>==
>Our support, Your Success! Visit http://opensdi.geo-solutions.it for more
>information.
>==
>
>
>Ing. Andrea Aime
>@geowolf
>Technical Lead
>
>
>GeoSolutions S.A.S.
>Via Poggio alle Viti 1187
>55054 Massarosa (LU)
>Italy
>phone: +39 0584 962313
>fax: +39 0584 1660272
>mob: +39 339 8844549
>
>
>http://www.geo-solutions.it
>http://twitter.com/geosolutions_it
>
>
>-------------------------------------------------------
>------------------------------------------------------------------------------
>Everyone hates slow websites. So do we.
>Make your web apps faster with AppDynamics
>Download AppDynamics Lite for free today:
>http://p.sf.net/sfu/appdyn_d2d_jan
>_______________________________________________
>Geoserver-users mailing list
>Geoserver-users@lists.sourceforge.net
>https://lists.sourceforge.net/lists/listinfo/geoserver-users
>
>
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_d2d_jan
_______________________________________________
Geoserver-users mailing list
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users