Embedding connection xml in mapfile

Ken Lord kenlord at GMAIL.COM
Fri Jul 22 14:20:55 PDT 2005


Hi Dave,
 Have you tried using double quotes for the start and end of the CONNECTION, 
and single quotes for all of the quoted values within the xml, not just 
around the variable? or do the xml values require the double quotes you have 
given them?
 Cheers,
Ken Lord
Vancouver BC


 On 7/22/05, David Shorthouse <dps1 at ualberta.ca> wrote: 
> 
> Hello folks,
>   I am making use of an OGR virtual data ODBC connection to SQL Server 
> 2000. I have a separate xml file to handle the query (actually it's a call 
> to a stored procedure). Ideally, I'd like to pass a variable from the 
> mapfile to this query and make use of a parameterized stored procedure. I 
> discovered that one can embed the xml within the mapfile, which should allow 
> this. I can format the separate xml file for the call to the stored 
> procedure to include a parameter and it works great. In this case however, I 
> have no hope of passing a variable as the parameter. The xml must be in the 
> map file. When I attempt to do this however, the layer just doesn't generate 
> because the connection chokes.
>  Here's what I have in the separate xml to handle the connection:
>  <OGRVRTDataSource>
> <OGRVRTLayer name="SpiderData">
> <SrcDataSource>ODBC:[connectionhere]</SrcDataSource> 
> <SrcLayer>SpeciesMapServer</SrcLayer>
> <SrcSQL>{CALL SpeciesMapServer}</SrcSQL>
> <GeometryType>wkbPoint</GeometryType>
> <LayerSRS>WGS84</LayerSRS> 
> <GeometryField encoding="PointFromColumns" x="UTMx" y="UTMy"/> 
> </OGRVRTLayer>
> </OGRVRTDataSource>
>  I can change the stored procedure to include a parameter and the SrcSQL 
> above to {CALL SpeciesMapServer ('parameter')} and it works great. But of 
> course, this doesn't permit passing a variable such as %parameter% from the 
> mapfile.
>  So, here is what I tried in the mapfile:
>   LAYER
> NAME spiders
> CONNECTIONTYPE OGR
> CONNECTION '<OGRVRTDataSource>
> <OGRVRTLayer name="SpiderData"
> <SrcDataSource>ODBC:[connectionhere]</SrcDataSource> 
> <SrcLayer>SpeciesMapServer</SrcLayer>
> <SrcSQL>{CALL SpeciesMapServer ('%FullName%')}</SrcSQL>
> <GeometryType>wkbPoint</GeometryType>
> <LayerSRS>WGS84</LayerSRS> 
> <GeometryField encoding="PointFromColumns" x="UTMx" y="UTMy"/> 
> </OGRVRTLayer>
> </OGRVRTDataSource>'
> DATA SpiderData
> STATUS DEFAULT
> TYPE POINT
> etc.
>  It's the SrcSQL above that chokes. Notice the required, either single or 
> double quote around %FullName%. This is obviously results in a truncation of 
> the remainder of the connection string in the case of a single quote or 
> failure of a layer being returned in the case of a double quote.
>  Anyone know how to get this to work? Is it just not possible to pass a 
> mapfile variable to a stored procedure's parameter?
>  Thanks,
>  Dave
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/mapserver-users/attachments/20050722/0f799e3d/attachment.htm>


More information about the MapServer-users mailing list