Обсуждение: SQL Server stored procedures?

Поиск
Список
Период
Сортировка

SQL Server stored procedures?

От
Todd P Marek
Дата:
Hello-


I have been trying for a while to write a function that would return
multiple rows and columns in a similar fashion as SQL server stored
procedures.


I can get my functions to return multiple rows and columns but only
from a single table.  I worked around this by creating a view that
ties all my tables together like so (basic example)-><fontfamily><param>Courier</param><x-tad-bigger>


CREATE FUNCTION usp_grab_classes() RETURNS SETOF classes

     AS 'SELECT classes.* FROM classes'

     LANGUAGE 'sql';


</x-tad-bigger></fontfamily>I am curious if there is a way to select
and return multiple columns from multiple tables without having to
first create a view.


Any help would greatly appreciated.


Todd Marek<fontfamily><param>Courier</param><x-tad-bigger>


</x-tad-bigger></fontfamily><italic>"If you think you understand
something it's habit."

--Gary Kraftsow--</italic>
Hello-

I have been trying for a while to write a function that would return
multiple rows and columns in a similar fashion as SQL server stored
procedures.

I can get my functions to return multiple rows and columns but only
from a single table.  I worked around this by creating a view that ties
all my tables together like so (basic example)->

CREATE FUNCTION usp_grab_classes() RETURNS SETOF classes
      AS 'SELECT classes.* FROM classes'
      LANGUAGE 'sql';

I am curious if there is a way to select and return multiple columns
from multiple tables without having to first create a view.

Any help would greatly appreciated.

Todd Marek

"If you think you understand something it's habit."
--Gary Kraftsow--

Re: SQL Server stored procedures?

От
Michael Fuhr
Дата:
On Mon, Nov 29, 2004 at 07:35:57PM -0600, Todd P Marek wrote:

> I am curious if there is a way to select and return multiple columns
> from multiple tables without having to first create a view.

You could use CREATE TYPE to create a composite type with the desired
fields and return SETOF that type.  When I do this, I sometimes
create the type to contain only keys; if I want additional columns
then I join the function results (rows of keys) to the appropriate
tables.

Depending on why you object to creating a view to get a composite
type, you might not want to create a custom type either.  The
function could return SETOF RECORD, but then queries that use it
will have to supply their own column definitions.  I prefer to do
this only when the return rows don't have a fixed format.

--
Michael Fuhr
http://www.fuhr.org/~mfuhr/