Hello!

i am trying out the sql transformer from cocoon 2.2, and, hm, let us say i am a little confused:

i have one matcher:

<map:match pattern="get">
 <map:generate src="vis-sql.xml" />
 <map:transform type="sql" label="debug">
    <map:parameter name="use-connection" value="intern" />
    <map:parameter name="show-nr-of-rows" value="true" />
    <map:parameter name="clob-encoding" value="UTF-8" />
    <map:parameter name="id" value="{request-param:id}" />
 </map:transform>
 <map:serialize type="xml" />
</map:match>

and the vis-sql.xml looks like that:

<?xml version="1.0"?>
<page xmlns:sql="http://apache.org/cocoon/SQL/2.0"; >
   <sql:execute-query >
     <sql:query name="aksessliste">
      select id, application, operation,tlf, email,
sign_name, sign_title, orderer_name, orderer_username, time from superbruker_form
      where id='<sql:substitute-value sql:name="id"/>'
     </sql:query>
   </sql:execute-query>
</page>

and that works fine!

Now i wrote something more interesting: First the matcher:

<map:match pattern="exportuserdata/*/*">
 <map:generate src="userdata_sql.xml" label="debug1"/>
 <map:transform type="sql" label="debug">
   <map:parameter name="use-connection" value="intern" />
   <map:parameter name="show-nr-of-rows" value="true" />
   <map:parameter name="org" value="{2}" />
 </map:transform>
 <map:serialize type="xml" />
</map:match>

and the userdata.sql:

<?xml version="1.0"?>
<page xmlns:sql="http://apache.org/cocoon/SQL/2.0";>
 <sql:execute-query >
   <sql:query name="person">
select pn_navn "fullnavn",pn_fornavn "given",pn_etternavn "family",PN_MNAVN "middlename",pe_brukerid "userid" , PN_INIT "initial", p.PE_ID "perid" from <sql:substitute-value sql:name="org"/>.pernavn n, <sql:substitute-value sql:name="org"/>.person p
where n.pn_peid_pe = p.pe_id
and p.pe_id > 0
order by pe_brukerid
   </sql:query>
   <sql:execute-query>
      <sql:query name="address">
select AK_TYPE "type", AK_NAVN "fullnavn", AK_POSTADR "postadresse", AK_POSTNR_PO "postnr", AK_POSTSTED_PO "poststed", AK_EPOST "epost", AK_TLF "tlf", AK_MOBIL "mobil" from <sql:substitute-value sql:name="org"/>.adrperson ap, <sql:substitute-value sql:name="org"/>.adressekp a
where ap.ap_adrid_ak = a.ak_adrid
and   ap.ap_peid_pe  = <sql:ancestor-value sql:name="perid" sql:level="1"/>
      </sql:query>
   </sql:execute-query>
 </sql:execute-query>
</page>

And for some reason that does not work as expected :-(

her is the snippet from the log:

parameters=Parameters[r/w]:{show-nr-of-rows=true, org=hin, use-connection=ephprod} 2009-08-28 10:08:59,924 DEBUG transformation.SQLTransformer - setupTransforming 2009-08-28 10:08:59,924 DEBUG transformation.SQLTransformer - setupTransforming 2009-08-28 10:08:59,925 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,925 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,926 DEBUG transformation.SQLTransformer - End text recording. Text=select pn_navn "fullnavn",pn_fornavn "given",pn_etternavn "family",PN_MNAVN "middlename",pe_brukerid "userid" , PN_INIT "initial", p.PE_ID "perid"
from
2009-08-28 10:08:59,926 DEBUG transformation.SQLTransformer - End text recording. Text=select pn_navn "fullnavn",pn_fornavn "given",pn_etternavn "family",PN_MNAVN "middlename",pe_brukerid "userid" , PN_INIT "initial", p.PE_ID "perid"
from
2009-08-28 10:08:59,926 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,926 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,926 DEBUG transformation.SQLTransformer - End text recording. Text=.pernavn n, 2009-08-28 10:08:59,926 DEBUG transformation.SQLTransformer - End text recording. Text=.pernavn n, 2009-08-28 10:08:59,926 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,926 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,927 DEBUG transformation.SQLTransformer - End text recording. Text=.person p
where n.pn_peid_pe = p.pe_id
and p.pe_id > 0
order by pe_brukerid
2009-08-28 10:08:59,927 DEBUG transformation.SQLTransformer - End text recording. Text=.person p
where n.pn_peid_pe = p.pe_id
and p.pe_id > 0
and pe_brukerid not in ('EPHORTE','EPHSYS')
order by pe_brukerid
2009-08-28 10:08:59,927 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,927 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,927 DEBUG transformation.SQLTransformer - End text recording. Text=select AK_TYPE "type", AK_NAVN "fullnavn", AK_POSTADR "postadresse", AK_POSTNR_PO "postnr", AK_POSTSTED_PO "poststed", AK_EPOST "epost", AK_TLF "tlf", AK_MOBIL "mobil"
from
2009-08-28 10:08:59,927 DEBUG transformation.SQLTransformer - End text recording. Text=select AK_TYPE "type", AK_NAVN "fullnavn", AK_POSTADR "postadresse", AK_POSTNR_PO "postnr", AK_POSTSTED_PO "poststed", AK_EPOST "epost", AK_TLF "tlf", AK_MOBIL "mobil"
from
2009-08-28 10:08:59,927 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,927 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,928 DEBUG transformation.SQLTransformer - End text recording. Text=.adrperson ap, 2009-08-28 10:08:59,928 DEBUG transformation.SQLTransformer - End text recording. Text=.adrperson ap, 2009-08-28 10:08:59,928 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,928 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,928 DEBUG transformation.SQLTransformer - End text recording. Text=.adressekp a
where ap.ap_adrid_ak = a.ak_adrid
and   ap.ap_peid_pe  =
2009-08-28 10:08:59,928 DEBUG transformation.SQLTransformer - End text recording. Text=.adressekp a
where ap.ap_adrid_ak = a.ak_adrid
and   ap.ap_peid_pe  =
2009-08-28 10:08:59,928 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,928 DEBUG transformation.SQLTransformer - Start text recording 2009-08-28 10:08:59,929 DEBUG transformation.SQLTransformer - End text recording. Text= 2009-08-28 10:08:59,929 DEBUG transformation.SQLTransformer - End text recording. Text= 2009-08-28 10:08:59,973 INFO transformation.SQLTransformer$Query - Failed to execute query org.apache.cocoon.transformation.sqltransformer$qu...@9b3b0c
java.sql.SQLException: ORA-00923: FROM keyword not found where expected

If i replace all the <sql:substitute-value sql:name="org"/> with hin, as the schema name in this example, even that query runs sucessfully. Someone who has an idea? Maybe just a hint where i can switch on the logging of the inner class Query of the SQLTransformer, that one is supposed to log out the whole sql-query before it is send to the database...


Grateful for any hint :-), that must be something stupid i do not see. Is it not possible to use the same substitute value twice? Cannot imagine that...

--
Med vennlig hilsen

Søren D. Krum
Systemutvikler/system developer
UNINETT FAS
+ 47 73557859

There are 10 different kind of people in the world, those who understand binary 
and those who don't


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

Reply via email to