OVH Cloud OVH Cloud

Problème sql

2 réponses
Avatar
olivier
bonjour j'ai fais cette procédure :

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO




ALTER PROCEDURE GetSecurityGroup
(/* binary(8) */
@User varchar(255),
@BMDatabase varchar(255) ,
@GroupSearch varchar(255) = ''
)
AS


DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)

set @SQLString = 'SELECT * FROM Group_Members INNER JOIN
Users ON Group_Members.User_Id = Users.Users_Id INNER JOIN ' + @BMDatabase +
'.dbo.Groups ON Group_Members.Group_Id = ' + @BMDatabase +
'.dbo.Groups.Groups_Id where Users.Users_Id = @User and ' + @BMDatabase +
'.dbo.Groups.Group_Name LIKE' + '' + '%@GroupSearch%' + ''

/*@ParmDefinition*/

SET @ParmDefinition = '@User varchar(255),@GroupSearch varchar(255)'

EXECUTE sp_executesql @SQLString,@ParmDefinition,@User,@GroupSearch
/*selection des groupes de sécurité de l'utilisateur */


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


Le code bloque à cause du @groupsearch
je ne vois pas ce qui bloque ou j'ai mal écrit le like dans cette
instruction

2 réponses

Avatar
Julien
fais toi un print de @SQLString et voit si le code s'execute ou s'il ya u probleme de syntaxe...

a vu de nez je l'aurai écrit comme ca :

set @SQLString = 'SELECT * FROM Group_Members INNER JOIN
Users ON Group_Members.User_Id = Users.Users_Id INNER JOIN ' + @BMDatabase +
'.dbo.Groups ON Group_Members.Group_Id = ' + @BMDatabase +
'.dbo.Groups.Groups_Id where Users.Users_Id = @User and ' + @BMDatabase +
'.dbo.Groups.Group_Name LIKE' + '' + '%' + @GroupSearch+'%'

mais bon .. j'ai pas testé ..
Apluche

"olivier" a écrit dans le message de news:
bonjour j'ai fais cette procédure :

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO




ALTER PROCEDURE GetSecurityGroup
(/* binary(8) */
@User varchar(255),
@BMDatabase varchar(255) ,
@GroupSearch varchar(255) = ''
)
AS


DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)

set @SQLString = 'SELECT * FROM Group_Members INNER JOIN
Users ON Group_Members.User_Id = Users.Users_Id INNER JOIN ' + @BMDatabase +
'.dbo.Groups ON Group_Members.Group_Id = ' + @BMDatabase +
'.dbo.Groups.Groups_Id where Users.Users_Id = @User and ' + @BMDatabase +
'.dbo.Groups.Group_Name LIKE' + '' + '%@GroupSearch%' + ''

/*@ParmDefinition*/

SET @ParmDefinition = '@User varchar(255),@GroupSearch varchar(255)'

EXECUTE sp_executesql @SQLString,@ParmDefinition,@User,@GroupSearch
/*selection des groupes de sécurité de l'utilisateur */


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


Le code bloque à cause du @groupsearch
je ne vois pas ce qui bloque ou j'ai mal écrit le like dans cette
instruction
Avatar
olivier
Le probleme vient bien du like :

CREATE PROCEDURE GetSecurityGroup
(/* binary(8) */
@User varchar(255),
@BMDatabase varchar(255) ,
@GroupSearch varchar(255)
)
AS


DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)
set @GroupSearch = rtrim(ltrim(@GroupSearch))

set @SQLString = 'SELECT * FROM Group_Members INNER JOIN
Users ON Group_Members.User_Id = Users.Users_Id INNER JOIN ' +
@BMDatabase + '.dbo.Groups ON Group_Members.Group_Id = ' + @BMDatabase +
'.dbo.Groups.Groups_Id where Users.Users_Id = @User and ' + @BMDatabase +
'.dbo.Groups.Group_Name LIKE' + '''' + '%@GroupSearch%' + ''''
/*'' + + ''*/
/*@ParmDefinition*/

print @sqlstring

SET @ParmDefinition = '@User varchar(255),@GroupSearch varchar(255)'

EXECUTE sp_executesql @SQLString,@ParmDefinition,@User, @GroupSearch
/*selection des groupes de sécurité de l'utilisateur */


Car la requete fonctionne mais la concatenantion de la var ne passe pas en
faite a chaque fois j'ai un resultat null a cause de cela


"Julien" a écrit dans le message de
news:
fais toi un print de @SQLString et voit si le code s'execute ou s'il ya u
probleme de syntaxe...

a vu de nez je l'aurai écrit comme ca :

set @SQLString = 'SELECT * FROM Group_Members INNER JOIN
Users ON Group_Members.User_Id = Users.Users_Id INNER JOIN ' + @BMDatabase +
'.dbo.Groups ON Group_Members.Group_Id = ' + @BMDatabase +
'.dbo.Groups.Groups_Id where Users.Users_Id = @User and ' + @BMDatabase +
'.dbo.Groups.Group_Name LIKE' + '' + '%' + @GroupSearch+'%'

mais bon .. j'ai pas testé ..
Apluche

"olivier" a écrit dans le message de
news:
bonjour j'ai fais cette procédure :

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO




ALTER PROCEDURE GetSecurityGroup
(/* binary(8) */
@User varchar(255),
@BMDatabase varchar(255) ,
@GroupSearch varchar(255) = ''
)
AS


DECLARE @SQLString NVARCHAR(500)
DECLARE @ParmDefinition NVARCHAR(500)

set @SQLString = 'SELECT * FROM Group_Members INNER JOIN
Users ON Group_Members.User_Id = Users.Users_Id INNER JOIN ' + @BMDatabase +
'.dbo.Groups ON Group_Members.Group_Id = ' + @BMDatabase +
'.dbo.Groups.Groups_Id where Users.Users_Id = @User and ' + @BMDatabase +
'.dbo.Groups.Group_Name LIKE' + '' + '%@GroupSearch%' + ''

/*@ParmDefinition*/

SET @ParmDefinition = '@User varchar(255),@GroupSearch varchar(255)'

EXECUTE sp_executesql @SQLString,@ParmDefinition,@User,@GroupSearch
/*selection des groupes de sécurité de l'utilisateur */


GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


Le code bloque à cause du @groupsearch
je ne vois pas ce qui bloque ou j'ai mal écrit le like dans cette
instruction