Bonjour
j'implémente du nouveau code sur une grosse appli en ASP.
En attendant une migration probable vers ASP.Net, je cherche à introduire de la requête paramétrée un peu partout où je trouve des requêtes concaténées.
ma question concerne le passage de paramètres à un objet command, avec une commande de type texte (adCmdText)
mes questions :
1) au sein d'une même routine, est ce intelligent d'utiliser un seul objet command ? et donc de remplacer des paramètres au fur et à mesure des besoins, comme je le fais ci dessous.
Voici ci dessous un exemple de ce que j'ai pu écrire.
2) avec les seuls points d'interrogations comme mécanisme de substitution des paramètres, il ne semble pas simple de réutiliser des paramètres dans des requêtes successives. L'usage explicite du nom des paramètres déclarés dans l'objet command suppose t'il de déclarer ces variables dans le contexte SQL ?
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
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 function update_group (group_name,comments, group_id) 'if update fails because group_name already exists then it returns -1 if name already exists otherwise it returns 0 Dim SQL, RSO dim SQLcmd Set SQLcmd = Server.CreateObject("ADODB.Command") Set SQLcmd.ActiveConnection = Conn SQLcmd.CommandType = adCmdText SQL= "select * from USERS_GROUPS where group_name = ? and group_id !=?" with SQLcmd .CommandText = SQL .Prepared = true .Parameters.Append .CreateParameter("@P1", adVarWChar,adParamInput,100, group_name) .Parameters.Append .CreateParameter("@P2", adInteger,adParamInput,, group_id) set RSO = .execute () end with if (RSO.eof and RSO.bof) then SQL ="update USERS_GROUPS set group_name=?, comments = ? where group_id=?" with SQLcmd .CommandText = SQL .Prepared = true .Parameters.delete "@P2" 'delete P2 to replace it with comment value .Parameters.Append .CreateParameter("@P2", adVarWChar,adParamInput,500, comments) .Parameters.Append .CreateParameter("@P3", adInteger,adParamInput,, group_id) set RSO = .execute () end with update_group = 0 else update_group = -1 end if Set SQLcmd = Nothing end function
du genre :
est ce la méthode à appliquer ? cela permettrait il de réutiliser un paramètre déjà déclaré au sein de l'objet command dans des requêtes successives ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SQL= "declare @P1 int ; select * from USERS_GROUPS where group_name = ? and group_id !=@P1" with SQLcmd .CommandText = SQL .Prepared = true .Parameters.Append .CreateParameter("@P1", adVarWChar,adParamInput,100, group_name) .Parameters.Append .CreateParameter("@P2", adInteger,adParamInput,, group_id) set RSO = .execute () end with
Merci d'avance pour vos avis éclairés
Partager