bonjour

(code simplifié pour mettre en évidence le problème)

dans une même connexion, j'exécute 2 requêtes, la première créé une table temporaire #
la 2ème lit cette même table #
(tant que la connexion à sql server n'est pas fermée, une table temporaire reste accessible, enfin en théorie)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Dim co As New System.Data.SqlClient.SqlConnection
co.ConnectionString = "ma chaine de connexion"
co.Open()
 
Dim cmd As New System.Data.SqlClient.SqlCommand
cmd.Connection = co
 
cmd.Parameters.Add("@test", SqlDbType.BigInt).Value = 1   ' ajout d'un parameter
 
cmd.CommandText = "CREATE TABLE #TOTO (a int)"
cmd.ExecuteNonQuery()
 
cmd.CommandText = "SELECT * FROM #TOTO"
cmd.ExecuteReader()
si je n'ajoute pas de parameter aucun soucis


par contre si j'ajoute un parameter à mon sqlcommand, l'executenonquery passe et l'executereader plante
SQL Exception : nom d'objet #TOTO non valide
je ne comprends pas en quoi ca plante, je pencherais même pour un bug du framework, je ne vois pas pourquoi à cause d'un parameter ma table # serait supprimée !?

si quelqu'un peut m'expliquer pourquoi ce comportement je suis preneur

merci