OVH Cloud OVH Cloud

Fonction utilisateur pour concatenation

2 réponses
Avatar
Michel
Bonjour a tous,

Dans une 'fonction define par l'utilisateur', est il possible de parcourir
une table ligne a ligne pour effectuer un traitement sur chacune d'elle?

Je m'explique avec une question cinema:
J'ai une table de seances: seances(noseance, date, heure) et une table des
films projetes: filmprojetes(noseance, titre).
Pour une seance, il peut y avoir plusieurs films projetes (max 3) (1 a N)

Je souhaiterai creer une 'fonction definie par l'utilisateur' qui retourne
dans une variable tous les titres des films projetes d'une seance. Du genre:

CREATE function dbo.fn_titresprojetes (@tnoseance numeric)
returns char(300)
as
begin
declare @titresfilm char(300), @tnoseance numeric(5,0)
select noseance,titre from filmprojetes where noseance=@tnoseance
* *ensuite je souhaite parcourir la table
** et concatener dans le champs @titresfilm
set @titrefilm =@titrefilm + RTRIM(filmprojetes.titre)
** prochain enregistrement
return @titrefilm
end


Merci d'avance pour toute aide

Michel

2 réponses

Avatar
Michel
Merci quand meme, j'ai trouve: ordre while et fetch


"Michel" a écrit dans le message de
news:emjfu7%
Bonjour a tous,

Dans une 'fonction define par l'utilisateur', est il possible de parcourir
une table ligne a ligne pour effectuer un traitement sur chacune d'elle?

Je m'explique avec une question cinema:
J'ai une table de seances: seances(noseance, date, heure) et une table des
films projetes: filmprojetes(noseance, titre).
Pour une seance, il peut y avoir plusieurs films projetes (max 3) (1 a N)

Je souhaiterai creer une 'fonction definie par l'utilisateur' qui retourne
dans une variable tous les titres des films projetes d'une seance. Du


genre:

CREATE function dbo.fn_titresprojetes (@tnoseance numeric)
returns char(300)
as
begin
declare @titresfilm char(300), @tnoseance numeric(5,0)
select noseance,titre from filmprojetes where noseance=@tnoseance
* *ensuite je souhaite parcourir la table
** et concatener dans le champs @titresfilm
set @titrefilm =@titrefilm + RTRIM(filmprojetes.titre)
** prochain enregistrement
return @titrefilm
end


Merci d'avance pour toute aide

Michel




Avatar
Fred BROUARD
plus rapide :

DECLARE @List varchar(8000)
SET @List = ''

SELECT @List = @List + COALESCE(RTRIM(COLUMN_NAME) +', ', '')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'COLUMNS'
ORDER BY COLUMN_NAME

SELECT @List

Inspire toi de cela

A +

Michel a écrit:
Bonjour a tous,

Dans une 'fonction define par l'utilisateur', est il possible de parcourir
une table ligne a ligne pour effectuer un traitement sur chacune d'elle?

Je m'explique avec une question cinema:
J'ai une table de seances: seances(noseance, date, heure) et une table des
films projetes: filmprojetes(noseance, titre).
Pour une seance, il peut y avoir plusieurs films projetes (max 3) (1 a N)

Je souhaiterai creer une 'fonction definie par l'utilisateur' qui retourne
dans une variable tous les titres des films projetes d'une seance. Du genre:

CREATE function dbo.fn_titresprojetes (@tnoseance numeric)
returns char(300)
as
begin
declare @titresfilm char(300), @tnoseance numeric(5,0)
select noseance,titre from filmprojetes where noseance=@tnoseance
* *ensuite je souhaite parcourir la table
** et concatener dans le champs @titresfilm
set @titrefilm =@titrefilm + RTRIM(filmprojetes.titre)
** prochain enregistrement
return @titrefilm
end


Merci d'avance pour toute aide

Michel





--
Frédéric BROUARD - expert SQL, spécialiste : SQL Server / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************