OVH Cloud OVH Cloud

Parametre procedure stockees sql dynamique

2 réponses
Avatar
Le Saint
Bonjour,

J'ai une procedure stockée qui prend en parametre une chaine de caracteres
et qui me renvoit le resultat :
voilà ma proc
ALTER PROCEDURE dbo.tabletest_sp
(
@ZoneName nvarchar(50)
)
AS
declare @sql varchar(1000)
declare @test nvarchar(50)

set @ZoneName = 'toto 1'

set @sql='Select * from TableTest where '

set @sql=@sql+' FirstName = ' + @ZoneName



Je n'obtient pas de resultat et je ne comprends pas pourquoi quelqu'un a une
idée ?

thx

have fun

2 réponses

Avatar
Sylvain Lafontaine
Pas une mais 2 idées en fait:

1- vous devez mettre la valeur « toto 1» entre apostrophe, puisqu'il s'agit
d'une variable chaîne de caractère. Comme ces apostrophes sont eux-même
dans une chaîne de caractère, on doit les dédoubler:

set @ZoneName = '''toto 1'''

2- Il ne suffit de construire votre chaîne SQL, il faut l'appeler quelque
part avec EXEC. Comme vous n'avez pas complété votre exemple de code,
j'imagine que vous avez de bonnes raisons de vouloir bâtir votre requête SQL
et de l'appeler ensuite par un EXEC au lieu d'utiliser directement votre
paramètre:

select * from dbo.TableTest where FirstName = @ZoneName

S. L.


"Le Saint" wrote in message
news:GCK_c.216933$
Bonjour,

J'ai une procedure stockée qui prend en parametre une chaine de caracteres
et qui me renvoit le resultat :
voilà ma proc
ALTER PROCEDURE dbo.tabletest_sp
(
@ZoneName nvarchar(50)
)
AS
declare @sql varchar(1000)
declare @test nvarchar(50)

set @ZoneName = 'toto 1'

set @sql='Select * from TableTest where '

set @sql=@sql+' FirstName = ' + @ZoneName



Je n'obtient pas de resultat et je ne comprends pas pourquoi quelqu'un a
une
idée ?

thx

have fun






Avatar
Le Saint
Merci, beaucoup

Le Saint


"Sylvain Lafontaine" <sylvain aei ca (fill the blanks, no spam please)> a
écrit dans le message de news:
Pas une mais 2 idées en fait:

1- vous devez mettre la valeur « toto 1» entre apostrophe, puisqu'il


s'agit
d'une variable chaîne de caractère. Comme ces apostrophes sont eux-même
dans une chaîne de caractère, on doit les dédoubler:

set @ZoneName = '''toto 1'''

2- Il ne suffit de construire votre chaîne SQL, il faut l'appeler quelque
part avec EXEC. Comme vous n'avez pas complété votre exemple de code,
j'imagine que vous avez de bonnes raisons de vouloir bâtir votre requête


SQL
et de l'appeler ensuite par un EXEC au lieu d'utiliser directement votre
paramètre:

select * from dbo.TableTest where FirstName = @ZoneName

S. L.


"Le Saint" wrote in message
news:GCK_c.216933$
> Bonjour,
>
> J'ai une procedure stockée qui prend en parametre une chaine de


caracteres
> et qui me renvoit le resultat :
> voilà ma proc
> ALTER PROCEDURE dbo.tabletest_sp
> (
> @ZoneName nvarchar(50)
> )
> AS
> declare @sql varchar(1000)
> declare @test nvarchar(50)
>
> set @ZoneName = 'toto 1'
>
> set @sql='Select * from TableTest where '
>
> set @sql=@sql+' FirstName = ' + @ZoneName
>
>
>
> Je n'obtient pas de resultat et je ne comprends pas pourquoi quelqu'un a
> une
> idée ?
>
> thx
>
> have fun
>
>
>
>