cocoon-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Markus Vaterlaus <mvaterl...@gmail.com>
Subject Re: Dynamic adoption of SQL-Query in ESQL based on parameter
Date Tue, 30 Nov 2004 09:14:19 GMT
Hello all, 

I got some other work to do, therefore the solution of my own problem
had to wait a bit... However this morning I found time and implemented
a solution. The information at

<http://cocoon.apache.org/2.1/userdocs/xsp/esql.html#Dynamic+Queries>

gave me a hint. For anybody else interested, I'll post here the
relevant parts of my actual ESQL. Be aware, that this solution has the
drawback of possible code injection. Actually for my application this
is not a major issue, as all users are internal and the connection
pool used is read only.

--mv
   
...
<page>
     <xsp:logic>
        String mytype = <xsp-request:get-parameter name="limit"/>;
        String where_obj = "";
        String mysort = <xsp-request:get-parameter name="sort"/>;
        String order_by = "";
        // where clause is added to the query if limit has any value
         if ( mytype!= null ) {
           where_obj += "AND c1.id = " + mytype;
         }
        // order by added to the query if sort has any value
          if ( mysort!= null ) {
            order_by += "order by " + mysort;
          }
 </xsp:logic>
...
<esql:execute-query>
 <esql:query>
      SELECT
           c1.id, c1.intl_id, c1.descn, o1.key, o1.text_ge
      FROM
           table1 c1,  table2 o1
      WHERE
                c1.id = o1.key
          <xsp:expr>where_obj</xsp:expr>
          <xsp:expr>order_by</xsp:expr>
</esql:query>
</esql:execute-query>        
...
</page>

On Mon, 22 Nov 2004 09:50:30 +0100, Markus Vaterlaus
<mvaterlaus@gmail.com> wrote:
> Hi list,
> 
> Is there a way to dynamically adopt an SQL-Query  in a ESQL based on
> request-parameters? Based on the following excerpt from an ESQL I can
> think of two use cases for such a possibility:
> 
> 1. the parameter "sort" is not present in the request, the query
>     is anyhow processed and the result displayed, but the result rows are
>     unsorted.
> 2. the query is enhanced with an additional where clauses
>     ( e.q. AND c1.id > <xsp-request:get-parameter name="limit"/>).
>      The additional condition is taken into account only, if the
>      parameter limit exists and is valid.
> 
> ...
> <esql:execute-query>
>   <esql:query>
>        SELECT
>             c1.id, c1.intl_id, c1.descn, o1.key, o1.text_ge
>        FROM
>             table1 c1,  table2 o1
>        WHERE
>                  c1.id = o1.key
>            AND c1.id > <xsp-request:get-parameter name="limit"/>
>           ORDER BY by <xsp-request:get-parameter name="sort"/>
>  </esql:query>
> </esql:execute-query>
> ....
> 
> Is there an easy way to do this? I didn't find any references in the docu.
> 
> Thank you for your support!
> 
> Markus
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@cocoon.apache.org
For additional commands, e-mail: users-help@cocoon.apache.org


Mime
View raw message