We help IT Professionals succeed at work.

What is the best way to return multiple values from a function call that has several parameters?

195 Views
Last Modified: 2013-11-05
Hello experts!

This question may have been answered before, but I cannot seem to find exactly what I am looking for.

I am going to simplify this question down to two dimesions from 3, but I think the answer for the 2 dimesional case should apply directly to the 3 dimensional one.

If I have a table with X,Y values in it, and I have a function ROTATE(@X float, @Y float) which rotates the X,Y point to a new coordinate system and returns a table (Range as float, Angle as float), what is the best (most efficient way) to write a query which will present the input values for each row in my table along with the rotated values for each row?

I think that a select statement that looks like this:
SELECT t.X,t.Y, (SELECT RANGE from ROTATE(t.X,t.Y)) as Range, (SELECT Angle from ROTATE(t.X,t.Y)) as Range From Table as t;
will do the trick, however as you can see, it needs to call the ROTATE function twice to get the job done; and in a 3 dimesional case, this calculation is pretty expensive.

Is there anyway to only make the call once for each record in the Table?

Thanks for the help!

Comment
Watch Question

Commented:
What version SQL Server?
CERTIFIED EXPERT
Top Expert 2011

Commented:
sorry why isn't the function returning a table of the values ?

then the sql statement is

SELECT X,Y, range,angle
from dbo.ROTATE() as t


create function dbo.rotate ()
returns table (x,y,range,angle)
as ....

 
Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION

Author

Commented:
dqdq: SQL Server 2005.

LowfatSpread: The function does return a table with two columns in it.  I need to pass in the X,Y parameters to determine what the values in the output table are.  I'm not sure how to do that with the information you have provided.

dqmq: That does the trick!  THANKS!

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.