Skip to Main Content

Java EE (Java Enterprise Edition) General Discussion

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

Null value for a column field when using jstl sql tags.

826025Oct 16 2011
I used jstl sql tags to perform a database operation but i get null value for a column field.
And i got the field value when i used it with scriptlet. Whats wrong here?

<sql:setDataSource var="db" driver="sun.jdbc.odbc.JdbcOdbcDriver" url="jdbc:odbc:db" user="root" password="1234" />
<sql:query var="emp" dataSource="${db}">
select desig from employee where emp_id=?
<sql:param value="${param.id }"/>
</sql:query>

<c:forEach var="row" items="${emp.rows}">
Your designation is : ${row.desig}
</c:forEach>

Comments

Barry B

Sorry, we're on Apex 18
Oracle database is 12

AndyH

In APEX you should probably be referring to the 'APP_USER' variable to get the name of the user running your application e.g.

select v('APP_USER') from dual;
select sys_context('APEX$SESSION','APP_USER') from dual;

This assumes that your users have to authenticate to use the page, otherwise, you use will always be app_user 'nobody' and 'APEX_PUBLIC_USER' if you refer to 'USER'.
I'm not sure why you are seeing the 'ANONYMOUS' user: that's usually associated with XDB. I assume that you're not using the Embedded PL/SQL Gateway to access your application?

Barry B

Hi,

I agree. Unfortunately over a hundred reports have been created before my time using the USER variable.
This ANONYMOUS user is then configured on a custom table to produce a local language. It is what it is...
Unfortunately that logic doesn't work when the interactive reports are subscribed to.
So I was wondering how/where ths SYS value comes from, and whether there is any database or Apex setting that we could change to turn the "USER" variable from SYS into ANONYMOUS (i.e the same behaviour as we get on the application).

Barry

AndyH

You can change USER - it's 'owned' by Oracle.
If you are seeing 'SYS' when you query USER e.g.

select user from dual

then you have a very strange setup.
However, if 'SYS' is a username in your application e.g. you have some form of custom authentication then you'll need to investigate from that side.

Barry B
select user from dual

Equal SYS: This is what is happening on the subscription. I was wondering where that is set.
Equals ANONYMOUS from Apex. I don't know where that is set, but it doesn't matter anyway.
Ideally we would like it to be ANONYMOUS for both. This is what I'm asking, sorry for not being clear.

AndyH

Presumably, you've not installed your application within the SYS schema? That would be very bad.
You cannot change the value returned by USER.

Barry B

if you "select user from dual" in apex as an interactive report, what do you get?
If you subscribe to it , what do you get?

1 - 7
Locked Post
New comments cannot be posted to this locked post.

Post Details

Locked on Nov 13 2011
Added on Oct 16 2011
0 comments
140 views