Arjuna Aircraft Ident.: F-MBSD | Impossible sans faire un T-SQL. Cherche de ce côté pour faire une FONCTION qui renvoie un objet de type TABLE.
Ainsi, tu pourras faire :
SELECT *
FROM
TAFONCTION(SELECT LECHAMP FROM LATABLE WHERE ID = 1)
Si tu te débrouille bien, mettons que "SELECT LECHAMP FROM LATABLE WHERE ID = 1" retourne "8&9&50&52&55&72" alors la requête retournera :
8
9
50
52
55
72
=> Pour ce qui est de la fonction elle-même, je te laisse chercher, je n'ai pas le temps de trop y réfléchir. Je pense que faire une boucle sur le PATINDEX et insérer dans une table temporaire chaque occurence est une solution simple et efficace.
Exemple de fonction retournant un objet de type table (trouvé dans la doc, en cherchant "table function" )
Code :
- CREATE FUNCTION LargeOrderShippers ( @FreightParm money )
- RETURNS @OrderShipperTab TABLE
- (
- ShipperID int,
- ShipperName nvarchar(80),
- OrderID int,
- ShippedDate datetime,
- Freight money
- )
- AS
- BEGIN
- INSERT @OrderShipperTab
- SELECT S.ShipperID, S.CompanyName,
- O.OrderID, O.ShippedDate, O.Freight
- FROM Shippers AS S
- INNER JOIN Orders AS O ON (S.ShipperID = O.ShipVia)
- WHERE O.Freight > @FreightParm
- RETURN
- END
|
L'exemple d'appel :
Code :
- SELECT *
- FROM LargeOrderShippers( $500 )
|
(simple comme bonjour ) |