OVH Cloud OVH Cloud

[SQL Server] Comment utiilser ce que renvoie EXEC

3 réponses
Avatar
Olivier
Bonjour,

Nous souhaiterions obtenir la valeur d'un champ d'une table afin de
l'utiilser dans notre programme.

Exemple : 1 table, 2 champs, et 2 lignes

Table1
id = 1
nom = 'toto'

id = 2
nom = 'titi'

nous souhaiterions obtenir le max(id) de la table1

J'ai fait :

Declare @table as nvarchar(10)
Declare @colonne as nvarchar(10)

set @table = 'Table1'
set @colonne = 'id'

EXEC 'select max(' + @colonne + ') from ' + @table

Cela fonctionne et renvoie '2' mais comment utiliser dans une requete cette
valeur ?

Est-ce que EXEC renvoie un recordset ?

Merci de votre aide

Olivier

3 réponses

Avatar
Sylvain Lafontaine
Y a-t-il une raison particulière pour utiliser EXEC N'chaîne SQL' au lieu
d'écrire directement une instruction SQL?

Si oui, alors vous devez utiliser la procédure sp_executesql en n'oubliant
de déclarer la variable OUTPUT autant pour EXEC que pour sp_executesql.
L'utilisation de l'Unicode est également obligatoire:

declare @i int
exec sp_executesql N'select @i = max(idecole) from ecoles', N'@i int
output', @i output
select @i

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: sylvain aei ca (fill the blanks, no spam please)


"Olivier" wrote in message
news:456affd6$0$25937$
Bonjour,

Nous souhaiterions obtenir la valeur d'un champ d'une table afin de
l'utiilser dans notre programme.

Exemple : 1 table, 2 champs, et 2 lignes

Table1
id = 1
nom = 'toto'

id = 2
nom = 'titi'

nous souhaiterions obtenir le max(id) de la table1

J'ai fait :

Declare @table as nvarchar(10)
Declare @colonne as nvarchar(10)

set @table = 'Table1'
set @colonne = 'id'

EXEC 'select max(' + @colonne + ') from ' + @table

Cela fonctionne et renvoie '2' mais comment utiliser dans une requete
cette valeur ?

Est-ce que EXEC renvoie un recordset ?

Merci de votre aide

Olivier




Avatar
Oliv'
*Olivier que je salut a écrit *:
Bonjour,

Nous souhaiterions obtenir la valeur d'un champ d'une table afin de
l'utiilser dans notre programme.

Exemple : 1 table, 2 champs, et 2 lignes

Table1
id = 1
nom = 'toto'

id = 2
nom = 'titi'

nous souhaiterions obtenir le max(id) de la table1

J'ai fait :

Declare @table as nvarchar(10)
Declare @colonne as nvarchar(10)

set @table = 'Table1'
set @colonne = 'id'

EXEC 'select max(' + @colonne + ') from ' + @table

Cela fonctionne et renvoie '2' mais comment utiliser dans une requete
cette valeur ?

Est-ce que EXEC renvoie un recordset ?

Merci de votre aide

Olivier



Pourquoi ne pas utiliser une variable ?

select @toto=max(@colonne) from @table

(pas essayé)

--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Have a nice day
Oliv'
Outlook : http://faq.outlook.free.fr/
les archives : http://groups.google.com/group/microsoft.public.fr.outlook
Dernière chance http://www.outlookcode.com/
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Avatar
saidagharbi23
Olivier a écrit :
Bonjour,

Nous souhaiterions obtenir la valeur d'un champ d'une table afin de
l'utiilser dans notre programme.

Exemple : 1 table, 2 champs, et 2 lignes

Table1
id = 1
nom = 'toto'

id = 2
nom = 'titi'

nous souhaiterions obtenir le max(id) de la table1

J'ai fait :

Declare @table as nvarchar(10)
Declare @colonne as nvarchar(10)

set @table = 'Table1'
set @colonne = 'id'

EXEC 'select max(' + @colonne + ') from ' + @table

Cela fonctionne et renvoie '2' mais comment utiliser dans une requete cet te
valeur ?

Est-ce que EXEC renvoie un recordset ?

Merci de votre aide

Olivier