Re: Need help in Stored procedures and functions

2005-04-07 Thread Peter Brawley
Dinesh,
Right, sorry for being dense, the C API doesn't yet have a published 
func for calling sprocs. You could put results in a temp table and query 
that table after your sproc returns. Or you might be able to rely on a 
stored procedure trick: even if the sproc issues one or more SELECT ... 
INTO statements, if its last SELECT has no INTO clause, the sproc will 
return its result just as if you'd issued that query directly.

PB
-
Anchan, Dinesh wrote:
Peter,
Thank you for your reply.  

Actually that request was accidentally sent to mysql@lists.mysql.com
instead of [EMAIL PROTECTED]  

MySQL support also suggested the same thing.  Problem is, values in the
OUT variable can be retrieved only from a future SQL query.  But we are
trying to call this procedure from a C program.   C Program can parse
the result set if it is an output from a simple SELECT statement.  I am
finding it difficult achieve something like below:
Here is a sample of informix function:
Create function test()
Returning integer, smallint, char(1), varchar(65);
Foreach
   select col1, col2
   into p_col1, p_col2
   from table1
  where 
  foreach
 select col1, col2, col3, col4
   into i_col1, i_col2, i_col3, i_col4
   from table2
  where i_col1 = p_col1
and i_col2 = p_col2
 if p_col3 =  then
do_some_calculations;
let p_string1 = 
 end if;
 if p_col4 =  then
do_some_calculations;
let p_string2 = ;
 end if;
 return i_col3, i_col4, p_string1, p_string2 with resume;
  end foreach
End foreach
End function;
Thank you for your help
Dinesh

From: Peter Brawley [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 07, 2005 12:24 PM
To: Anchan, Dinesh
Cc: mysql@lists.mysql.com
Subject: Re: Need help in Stored procedures and functions

Dinesh,
A stored func returns a scalar. To return multiple values, use an sproc
declaring the INOUT variables you need, & pick up their values in the
calling code after the sproc has executed.
Peter Brawley
http://www.artfulsoftware.com
-
Anchan, Dinesh wrote: 

	Hi,
	 
	I am trying to write a function which returns multiple values.
I don't know if this is allowed or not but i am not able to create this
function.  I get the following error:
	 
	ERROR 1064 (42000): You have an error in your SQL syntax; check
the manual that corresponds to your MySQL server version for the right
syntax to use near ' 
	   integer,
	   integer,  ' at line 7
	
	I have attached the function i am trying to create.  Please
refer to the attached thread for contract related information.
	 
	I would appreciate if somebody can give me a call so that i can
clear few other questions.
	 
	Thanks
	Dinesh Anchan


 


--
No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.9.4 - Release Date: 4/6/2005
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]


RE: Need help in Stored procedures and functions

2005-04-07 Thread Anchan, Dinesh
Shawn,
 
Thank you for your reply.
 
It looks like this is the only option.  But i was trying to avoid the
creation of temp table and parsing of data at the application layer
since it can potentially slow down the overall performance.
 
Dinesh



From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 07, 2005 4:03 PM
To: Anchan, Dinesh
Cc: mysql@lists.mysql.com; [EMAIL PROTECTED]
Subject: RE: Need help in Stored procedures and functions




"Anchan, Dinesh" <[EMAIL PROTECTED]> wrote on 04/07/2005
03:44:07 PM:

> Peter,
>  
> Thank you for your reply.  
>  
> Actually that request was accidentally sent to mysql@lists.mysql.com
> instead of [EMAIL PROTECTED]  
>  
> MySQL support also suggested the same thing.  Problem is, values in
the
> OUT variable can be retrieved only from a future SQL query.  But we
are
> trying to call this procedure from a C program.   C Program can parse
> the result set if it is an output from a simple SELECT statement.  I
am
> finding it difficult achieve something like below:
>  
> Here is a sample of informix function:
>  
> Create function test()
> Returning integer, smallint, char(1), varchar(65);
> 
> Foreach
> 
> select col1, col2
> into p_col1, p_col2
> from table1
>where 
> 
>foreach
> 
>   select col1, col2, col3, col4
> into i_col1, i_col2, i_col3, i_col4
> from table2
>where i_col1 = p_col1
>  and i_col2 = p_col2
> 
>   if p_col3 =  then
>  do_some_calculations;
>  let p_string1 = 
>   end if;
> 
>   if p_col4 =  then
>  do_some_calculations;
>  let p_string2 = ;
>   end if;
> 
>   return i_col3, i_col4, p_string1, p_string2 with resume;
> 
>end foreach
> 
> End foreach
> 
> End function;
> 
> Thank you for your help
> 
> Dinesh
> 
> 
> ____________
> 
> From: Peter Brawley [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, April 07, 2005 12:24 PM
> To: Anchan, Dinesh
> Cc: mysql@lists.mysql.com
> Subject: Re: Need help in Stored procedures and functions
> 
> 
> Dinesh,
> 
> A stored func returns a scalar. To return multiple values, use an
sproc
> declaring the INOUT variables you need, & pick up their values in the
> calling code after the sproc has executed.
> 
> Peter Brawley
> http://www.artfulsoftware.com
> 
> -
> 
> Anchan, Dinesh wrote: 
> 
>Hi,
> 
>I am trying to write a function which returns multiple values.
> I don't know if this is allowed or not but i am not able to create
this
> function.  I get the following error:
> 
>ERROR 1064 (42000): You have an error in your SQL syntax; check
> the manual that corresponds to your MySQL server version for the right
> syntax to use near ' 
>   integer,
>   integer,  ' at line 7
>
>I have attached the function i am trying to create.  Please
> refer to the attached thread for contract related information.
> 
>I would appreciate if somebody can give me a call so that i can
> clear few other questions.
> 
>Thanks
>Dinesh Anchan
> 
> 

I don't speak Informix (and I haven't used MySQL's sprocs yet) but it
seems as though you are looping through the JOIN of one table against
another and returning a row of calculated information for each
JOINed-row combination.  Could you possibly perform your calculations
and accumulate your return values in a temporary table (I suggest a
temporary table because it is connection-specific) then return your
results at the end of the statement with a simple SELECT from the temp
table? 

If all of the values you need to return are in variables, you should be
able to simulate a single row table by saying 

SELECT variable1 as variable1name, variable2 as variable2name, ...; 

You shouldn't need a FROM clause because you are only SELECTing
constants. 

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine 





RE: Need help in Stored procedures and functions

2005-04-07 Thread SGreen
"Anchan, Dinesh" <[EMAIL PROTECTED]> wrote on 04/07/2005 
03:44:07 PM:

> Peter,
> 
> Thank you for your reply. 
> 
> Actually that request was accidentally sent to mysql@lists.mysql.com
> instead of [EMAIL PROTECTED] 
> 
> MySQL support also suggested the same thing.  Problem is, values in the
> OUT variable can be retrieved only from a future SQL query.  But we are
> trying to call this procedure from a C program.   C Program can parse
> the result set if it is an output from a simple SELECT statement.  I am
> finding it difficult achieve something like below:
> 
> Here is a sample of informix function:
> 
> Create function test()
> Returning integer, smallint, char(1), varchar(65);
> 
> Foreach
> 
> select col1, col2
> into p_col1, p_col2
> from table1
>where 
> 
>foreach
> 
>   select col1, col2, col3, col4
> into i_col1, i_col2, i_col3, i_col4
> from table2
>where i_col1 = p_col1
>  and i_col2 = p_col2
> 
>   if p_col3 =  then
>  do_some_calculations;
>  let p_string1 = 
>   end if;
> 
>   if p_col4 =  then
>  do_some_calculations;
>  let p_string2 = ;
>   end if;
> 
>   return i_col3, i_col4, p_string1, p_string2 with resume;
> 
>end foreach
> 
> End foreach
> 
> End function;
> 
> Thank you for your help
> 
> Dinesh
> 
> 
> ____________
> 
> From: Peter Brawley [mailto:[EMAIL PROTECTED] 
> Sent: Thursday, April 07, 2005 12:24 PM
> To: Anchan, Dinesh
> Cc: mysql@lists.mysql.com
> Subject: Re: Need help in Stored procedures and functions
> 
> 
> Dinesh,
> 
> A stored func returns a scalar. To return multiple values, use an sproc
> declaring the INOUT variables you need, & pick up their values in the
> calling code after the sproc has executed.
> 
> Peter Brawley
> http://www.artfulsoftware.com
> 
> -
> 
> Anchan, Dinesh wrote: 
> 
>Hi,
> 
>I am trying to write a function which returns multiple values.
> I don't know if this is allowed or not but i am not able to create this
> function.  I get the following error:
> 
>ERROR 1064 (42000): You have an error in your SQL syntax; check
> the manual that corresponds to your MySQL server version for the right
> syntax to use near ' 
>   integer,
>   integer,  ' at line 7
> 
>I have attached the function i am trying to create.  Please
> refer to the attached thread for contract related information.
> 
>I would appreciate if somebody can give me a call so that i can
> clear few other questions.
> 
>Thanks
>Dinesh Anchan
> 
> 

I don't speak Informix (and I haven't used MySQL's sprocs yet) but it 
seems as though you are looping through the JOIN of one table against 
another and returning a row of calculated information for each JOINed-row 
combination.  Could you possibly perform your calculations and accumulate 
your return values in a temporary table (I suggest a temporary table 
because it is connection-specific) then return your results at the end of 
the statement with a simple SELECT from the temp table?

If all of the values you need to return are in variables, you should be 
able to simulate a single row table by saying 

SELECT variable1 as variable1name, variable2 as variable2name, ...;

You shouldn't need a FROM clause because you are only SELECTing constants.

Shawn Green
Database Administrator
Unimin Corporation - Spruce Pine




RE: Need help in Stored procedures and functions

2005-04-07 Thread Anchan, Dinesh
Peter,
 
Thank you for your reply.  
 
Actually that request was accidentally sent to mysql@lists.mysql.com
instead of [EMAIL PROTECTED]  
 
MySQL support also suggested the same thing.  Problem is, values in the
OUT variable can be retrieved only from a future SQL query.  But we are
trying to call this procedure from a C program.   C Program can parse
the result set if it is an output from a simple SELECT statement.  I am
finding it difficult achieve something like below:
 
Here is a sample of informix function:
 
Create function test()
Returning integer, smallint, char(1), varchar(65);

Foreach

select col1, col2
into p_col1, p_col2
from table1
   where 

   foreach

  select col1, col2, col3, col4
into i_col1, i_col2, i_col3, i_col4
from table2
   where i_col1 = p_col1
 and i_col2 = p_col2

  if p_col3 =  then
 do_some_calculations;
 let p_string1 = 
  end if;

  if p_col4 =  then
 do_some_calculations;
 let p_string2 = ;
  end if;

  return i_col3, i_col4, p_string1, p_string2 with resume;

   end foreach

End foreach

End function;

Thank you for your help

Dinesh




From: Peter Brawley [mailto:[EMAIL PROTECTED] 
Sent: Thursday, April 07, 2005 12:24 PM
To: Anchan, Dinesh
Cc: mysql@lists.mysql.com
Subject: Re: Need help in Stored procedures and functions


Dinesh,

A stored func returns a scalar. To return multiple values, use an sproc
declaring the INOUT variables you need, & pick up their values in the
calling code after the sproc has executed.

Peter Brawley
http://www.artfulsoftware.com

-

Anchan, Dinesh wrote: 

Hi,
 
I am trying to write a function which returns multiple values.
I don't know if this is allowed or not but i am not able to create this
function.  I get the following error:
 
ERROR 1064 (42000): You have an error in your SQL syntax; check
the manual that corresponds to your MySQL server version for the right
syntax to use near ' 
   integer,
   integer,  ' at line 7

I have attached the function i am trying to create.  Please
refer to the attached thread for contract related information.
 
I would appreciate if somebody can give me a call so that i can
clear few other questions.
 
Thanks
Dinesh Anchan


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]



Re: Need help in Stored procedures and functions

2005-04-07 Thread Peter Brawley




Dinesh,

A stored func returns a scalar. To return multiple values, use an sproc
declaring the INOUT variables you need, & pick up their values in
the calling code after the sproc has executed.

Peter Brawley
http://www.artfulsoftware.com

-

Anchan, Dinesh wrote:

  
  
  
  Hi,
   
  I am trying to write a function
which returns multiple values.  I don't know if this is allowed or not
but i am not able to create this function.  I get the following error:
   
  ERROR 1064 (42000): You have an
error in your SQL syntax; check the manual that corresponds to your
MySQL server version for the right syntax to use near ' 
   integer,
   integer,  ' at line 7
  
  I have attached the function i
am trying to create.  Please refer to the attached thread for contract
related information.
   
  I would appreciate if somebody
can give me a call so that i can clear few other questions.
   
  Thanks
  Dinesh Anchan
  212-231-7187
  
  
  From: Pam Keen
[mailto:[EMAIL PROTECTED]] 
  Sent: Thursday, April 07, 2005 10:21 AM
  To: Marcus, Jeff
  Cc: Pisula, Mike; Pedersen, Mads; Mishkind, Scott; Anchan,
Dinesh; [EMAIL PROTECTED]; 'Philip Antoniades'; 'Kenneth
Moses'
  Subject: RE: MySQL/24/7 Real Media support contract renewal
  
  
  Jeff,
   
  What is your
availability to discuss/resolve the below and to discuss the Informix
migration effort.  I am available early next week - Monday all day and
Tuesday, late morning,early afternoon.  As an interim measure, I
extended support till the end of this week for your team's development
efforts.
   
  Thank you,
   
  Pam Keen
  212 566 2714
  
  
  

No virus found in this incoming message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.9.4 - Release Date: 4/6/2005




No virus found in this outgoing message.
Checked by AVG Anti-Virus.
Version: 7.0.308 / Virus Database: 266.9.4 - Release Date: 4/6/2005

-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/[EMAIL PROTECTED]