OVH Cloud OVH Cloud

Declaration de variables

2 réponses
Avatar
Scandecor
Bonjour,

Je cherche comment inclure dans une variable plusieurs données afin
d'extraire les enregistrements mentionnés par cette variable dans une
procédure stockée utilisée pour un développement sur Crystal Report.

Merci pour votre aide.

Cordialement.

Marc

2 réponses

Avatar
Med Bouchenafa
Je ne sais pas si je comprend bien ce que tu recherches à faire
Mais je dirais qu'il te suffit de concaténer tes données dans une variable
de type varchar en les séparant par une virgule ou tout séparateur approprié
Tu passeras cette variable en tant que paramètre à ta procédure et tu feras
l'analyse à l'intérieur de ta procédure du contenu de ce paramètre
--
Bien cordialement
Med Bouchenafa

"Scandecor" wrote in message
news:43a7ce2f$0$21749$
Bonjour,

Je cherche comment inclure dans une variable plusieurs données afin
d'extraire les enregistrements mentionnés par cette variable dans une
procédure stockée utilisée pour un développement sur Crystal Report.

Merci pour votre aide.

Cordialement.

Marc



Avatar
Philippe T [MS]
Bonjour,

Tu peux utiliser pour spliter ta chaine sur un caractère la fonction
suivante :

<<<

/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<StoredProcedure name="cf_GetSplit">

<Object> ... </Object>

<History Author = "Philippe TROTIN - " Date =
"02/10/2003"> </History>

</StoredProcedure>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
CREATE FUNCTION cf_GetSplit
(
@sText nvarchar(4000),
@sDelim nvarchar(1) = ' ',
@occ int
)
RETURNS nvarchar(1000)
AS
BEGIN
DECLARE @Val_Next_1 int
DECLARE @Val_Next_2 int
DECLARE @bcontinue bit
DECLARE @LenMax int
DECLARE @sTemp nvarchar(4000)

SET @LenMax = LEN(@sText)

IF @occ = 1 OR @occ = 0
BEGIN
SET @Val_Next_1 = CHARINDEX(@sDelim, @sText)
IF @Val_Next_1 <> 0
BEGIN
SET @sText = SUBSTRING(@sText, 1, @Val_Next_1 - 1)
END
END
ELSE
BEGIN
SET @bcontinue = 1
WHILE @bcontinue = 1
BEGIN
SET @occ = @occ - 1

SET @Val_Next_1 = CHARINDEX(@sDelim, @sText)
SET @Val_Next_2 = CHARINDEX(@sDelim, SUBSTRING(@sText, @Val_Next_1 + 1,
@LenMax))

SET @sText = SUBSTRING(@sText, @Val_Next_1 + 1, 100)

--Exit the WHILE loop.
IF @occ = 1
BEGIN
IF @Val_Next_2 <> 0
BEGIN
SET @sText = SUBSTRING(@sText, 1, @Val_Next_2 - 1)
END
SET @bcontinue = 0
END
END
END

RETURN @sText
END









Ou encore :

<<<


/*-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
<UserFunction name="cf_GetSplitTable">

<Object> Return the result of a String split as a table
</Object>

<History Author = "Philippe TROTIN - " Date =
"18/05/2004"> Core 2.1 </History>

</UserFunction>
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------*/
CREATE FUNCTION dbo.cf_GetSplitTable
(
@sText nvarchar(4000),
@sDelim nvarchar(1) = ' '
)
RETURNS @MySplitTable TABLE (MY_VALUE nvarchar(4000) COLLATE
database_default, MY_ORDER int)
BEGIN

DECLARE @Val_Next_1 int
DECLARE @Val_Next_2 int
DECLARE @OccurenceNumber int

-- If the separator is not find
SET @Val_Next_1 = CHARINDEX(@sDelim, @sText)

IF @Val_Next_1 = 0
BEGIN
IF @sText <> ''
BEGIN
INSERT INTO @MySplitTable( MY_VALUE, MY_ORDER )
VALUES( @sText, 1 )
END

RETURN
END

-- Insert the first occurence
SET @OccurenceNumber = 1

INSERT INTO @MySplitTable( MY_VALUE, MY_ORDER )
VALUES( SUBSTRING(@sText, 1, @Val_Next_1 - 1), @OccurenceNumber )

-- Insert all other occurence
WHILE ( 1 = 1 )
BEGIN
SET @Val_Next_1 = CHARINDEX(@sDelim, @sText)
SET @Val_Next_2 = CHARINDEX(@sDelim, SUBSTRING(@sText, @Val_Next_1 + 1,
4000))

SET @sText = SUBSTRING(@sText, @Val_Next_1 + 1, 4000)

IF @Val_Next_2 <> 0
BEGIN
SET @OccurenceNumber = @OccurenceNumber + 1

INSERT INTO @MySplitTable( MY_VALUE, MY_ORDER )
VALUES( SUBSTRING(@sText, 1, @Val_Next_2 - 1), @OccurenceNumber )
END
ELSE
BEGIN
IF @sText <> ''
BEGIN
SET @OccurenceNumber = @OccurenceNumber + 1

INSERT INTO @MySplitTable( MY_VALUE, MY_ORDER )
VALUES( @sText, @OccurenceNumber )
END
BREAK
END
END

RETURN
END











----------------------------------------------------------------------
Philippe TROTIN - Microsoft Service France

"Scandecor" wrote in message
news:43a7ce2f$0$21749$
Bonjour,

Je cherche comment inclure dans une variable plusieurs données afin
d'extraire les enregistrements mentionnés par cette variable dans une
procédure stockée utilisée pour un développement sur Crystal Report.

Merci pour votre aide.

Cordialement.

Marc