Showing posts with label calling. Show all posts
Showing posts with label calling. Show all posts

Wednesday, March 7, 2012

Job Exe calling MAPI object, fails

Hi!
I have got a VB.NET exe which is using MAPI object to read the emails.
Now, the exe works excellent if I execute it independently. However, my
requirement is, I have to call this exe through SQL Jobs (SQL Agent). Now,
when I do that way, the MAPI logon fails, everytime.
It is giving me this error:
[Collaboration Data Objects - [MAPI_E_LOGON_FAILED(80040111)]]
Please help!
Regards,
Sachin VaishnavThe SQL agent will use a MAPI profile associated with the SQL Agent service
login, not the currently logged-in console user. Log in to the console
using the SQL Agent service account and create the correct MAPI profile.
Geoff N. Hiten
Senior Database Administrator
Microsoft SQL Server MVP
"Sachin Vaishnav" <SachinVaishnav@.discussions.microsoft.com> wrote in
message news:01864869-CAC2-45C9-A88A-6E8102BF1F70@.microsoft.com...
> Hi!
> I have got a VB.NET exe which is using MAPI object to read the emails.
> Now, the exe works excellent if I execute it independently. However, my
> requirement is, I have to call this exe through SQL Jobs (SQL Agent). Now,
> when I do that way, the MAPI logon fails, everytime.
> It is giving me this error:
> [Collaboration Data Objects - [MAPI_E_LOGON_FAILED(80040111)]]
> Please help!
> Regards,
> Sachin Vaishnav

Job Exe calling MAPI object, fails

Hi!
I have got a VB.NET exe which is using MAPI object to read the emails.
Now, the exe works excellent if I execute it independently. However, my
requirement is, I have to call this exe through SQL Jobs (SQL Agent). Now,
when I do that way, the MAPI logon fails, everytime.
It is giving me this error:
[Collaboration Data Objects - [MAPI_E_LOGON_FAILED(80040111)]]
Please help!
Regards,
Sachin VaishnavThe SQL agent will use a MAPI profile associated with the SQL Agent service
login, not the currently logged-in console user. Log in to the console
using the SQL Agent service account and create the correct MAPI profile.
--
Geoff N. Hiten
Senior Database Administrator
Microsoft SQL Server MVP
"Sachin Vaishnav" <SachinVaishnav@.discussions.microsoft.com> wrote in
message news:01864869-CAC2-45C9-A88A-6E8102BF1F70@.microsoft.com...
> Hi!
> I have got a VB.NET exe which is using MAPI object to read the emails.
> Now, the exe works excellent if I execute it independently. However, my
> requirement is, I have to call this exe through SQL Jobs (SQL Agent). Now,
> when I do that way, the MAPI logon fails, everytime.
> It is giving me this error:
> [Collaboration Data Objects - [MAPI_E_LOGON_FAILED(80040111)]]
> Please help!
> Regards,
> Sachin Vaishnav

Job Exe calling MAPI object, fails

Hi!
I have got a VB.NET exe which is using MAPI object to read the emails.
Now, the exe works excellent if I execute it independently. However, my
requirement is, I have to call this exe through SQL Jobs (SQL Agent). Now,
when I do that way, the MAPI logon fails, everytime.
It is giving me this error:
[Collaboration Data Objects - [MAPI_E_LOGON_FAILED(80040111)]]
Please help!
Regards,
Sachin Vaishnav
The SQL agent will use a MAPI profile associated with the SQL Agent service
login, not the currently logged-in console user. Log in to the console
using the SQL Agent service account and create the correct MAPI profile.
Geoff N. Hiten
Senior Database Administrator
Microsoft SQL Server MVP
"Sachin Vaishnav" <SachinVaishnav@.discussions.microsoft.com> wrote in
message news:01864869-CAC2-45C9-A88A-6E8102BF1F70@.microsoft.com...
> Hi!
> I have got a VB.NET exe which is using MAPI object to read the emails.
> Now, the exe works excellent if I execute it independently. However, my
> requirement is, I have to call this exe through SQL Jobs (SQL Agent). Now,
> when I do that way, the MAPI logon fails, everytime.
> It is giving me this error:
> [Collaboration Data Objects - [MAPI_E_LOGON_FAILED(80040111)]]
> Please help!
> Regards,
> Sachin Vaishnav

Friday, February 24, 2012

JDBC: calling a stored procedure with multiple return values.

Using JDBC, is there a way to call a stored procedure with multiple
return values? Thanks.
randy.p.ho@.gmail.com wrote:

> Using JDBC, is there a way to call a stored procedure with multiple
> return values? Thanks.

Absolutely. What do you mean by 'multiple return values'? Multiple output
parameters? Multiple result sets and/or update counts? Multiple mixes of
result sets and update counts?
If you will show the procedure signature and maybe even the text? Tell
us what the body of the procedure returns.

Joe Weinstein at BEA|||Thanks for the reply. I meant "multiple output parameters".

Here is how I execute the stored procedure:

declare @.ErrorID int
declare @.ErrorStr varchar(255)
exec procName
@.customerId = '1234567890',
@.customerName = 'some name',
@.error_code = @.ErrorID,
@.error_state = @.ErrorStr

Here is the procedure:

create procedure uxt1.procName
@.customerId char(15) output,
@.customerName char(64) output,
@.error_code int output,
@.error_state varchar(255) output
... ...
/* all the business logic */
... ...
return (@.error_state)
GO

Here's what SQL server gives me if I do a "Script object as Execute":
DECLARE @.RC int
DECLARE @.customerId char(15)
DECLARE @.customerName char(64)
DECLARE @.error_code int
DECLARE @.error_state varchar(255)
EXEC @.RC = [uxt1].[procName] @.customerId, @.customerName, @.error_code
OUTPUT , @.error_state OUTPUT

The following is what I've tried in a Java program:
...
CallableStatement cs = conn.prepareCall(" {? = call
uxt1.procName(?,?,?,?)}" );
cs.registerOutParameter(1,java.sql.Types.INTEGER);
cs.setString(2,"some ID");
cs.setString(3,"some Name");
cs.registerOutParameter(4,java.sql.Types.INTEGER);
cs.registerOutParameter(5,java.sql.Types.VARCHAR);
ResultSet rs = cs.executeQuery();
...

My code doesn't throw any exception; but the procedure was not executed
correctly (i.e. it's not doing what it's supposed to do, which is to
simply insert some values into a table).
Any help is appreciated. Thanks in advance.|||
randy.p.ho@.gmail.com wrote:

> Thanks for the reply. I meant "multiple output parameters".
> Here is how I execute the stored procedure:
> declare @.ErrorID int
> declare @.ErrorStr varchar(255)
> exec procName
> @.customerId = '1234567890',
> @.customerName = 'some name',
> @.error_code = @.ErrorID,
> @.error_state = @.ErrorStr
>
> Here is the procedure:
> create procedure uxt1.procName
> @.customerId char(15) output,
> @.customerName char(64) output,
> @.error_code int output,
> @.error_state varchar(255) output
> ... ...
> /* all the business logic */
> ... ...
> return (@.error_state)
> GO
>
> Here's what SQL server gives me if I do a "Script object as Execute":
> DECLARE @.RC int
> DECLARE @.customerId char(15)
> DECLARE @.customerName char(64)
> DECLARE @.error_code int
> DECLARE @.error_state varchar(255)
> EXEC @.RC = [uxt1].[procName] @.customerId, @.customerName, @.error_code
> OUTPUT , @.error_state OUTPUT
>
> The following is what I've tried in a Java program:
> ...
> CallableStatement cs = conn.prepareCall(" {? = call
> uxt1.procName(?,?,?,?)}" );
> cs.registerOutParameter(1,java.sql.Types.INTEGER);
> cs.setString(2,"some ID");
> cs.setString(3,"some Name");
> cs.registerOutParameter(4,java.sql.Types.INTEGER);
> cs.registerOutParameter(5,java.sql.Types.VARCHAR);
> ResultSet rs = cs.executeQuery();
> ...
> My code doesn't throw any exception; but the procedure was not executed
> correctly (i.e. it's not doing what it's supposed to do, which is to
> simply insert some values into a table).
> Any help is appreciated. Thanks in advance.

Is the procedure executing at all? You shouldn't be calling executeQuery()
unless the first thing the procedure does is a select. Use execute() and
then loop:

cs.execute();
while (true)
{
int update_count = ps.getUpdateCount();
ResultSet rs = ps.getResultSet();
if ((rs == null && (update_count == -1)) break; // done

if (rs != null) process rs;
ps.getMoreResults();
}
// after processing inline results, call ps.getXXX() to get output parameters.

Whatever jdbc driver you're suing is pretty flakey if it
returns a result set from executeQuery() and the
procedure didn't do a select for data to go to the caller...

Joe Weinstein at BEA|||I have closely the same problem, excepting that my stored procs returns a "TABLE".

In fact, I have a SQL function that must return a TABLE and get 2 parameters. Its signature is as follow:

FUNCTION myFunction (@.codett varchar(40), @.codet varchar(40) )
RETURNS @.Tab TABLE([cp] [varchar] (40), [pourcentage] [int])

I'd like to call it from my DAO (using JDBC). having that 'cs' is a CallableStatement, I tried:

cs = jdbcConnection.prepareCall("{? = call myFunction(?, ?)}");
cs.registerOutParameter( 1, Types.OTHER );
cs.setString(2, codett);//codett contains a String
cs.setString(3, codet);//codet contains a String
ResultSet rset = cs.executeQuery();

However, when a get to the "executeQuery()" method, I get an SQLException saying that "myFunction" is a function Object.

have you met such a problem ?