Toon posts:

[ms-sql|ADO] Geparametriseerde select met IN-operator

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik wil zoiets als het volgende aan de praat krijgen met VB en ADO icm met SQL Server:
code:
1
SELECT x FROM y WHERE z IN (?)

Op de plek van het vraagteken moeten 1 of meerdere integers komen (maar strings moeten ook kunnen).

Ik ben bijna op het punt dat ik denk dat dit niet met ADO kan. Ik ben er al achter dat AdArray ergens anders voor bedoeld is.

Bij bovenstaand voorbeeld stuurt ADO het volgende op naar SQL Server (Profiler is niet alleen om te profilen ;) )
code:
1
SELECT x FROM y WHERE z IN @P1


Heeft iemand dit al eerder bij de hand gehad, want ik sta op het punt m'n eigen parameter-engine te gaan maken met sp_executesql, en dat lijkt me eigenlijk toch wel overdreven...

De code is zoiets:
code:
1
2
3
cmd.CommandType = adCmdText
cmd.CommandText = "SELECT idClient FROM client WHERE idClient IN (?)"
cmd.Parameters.Append cmd.CreateParameter("id1", adInteger, adParamInput, 4, 20)

en bij meerdere parameters
code:
1
2
3
4
cmd.CommandType = adCmdText
cmd.CommandText = "SELECT idClient FROM client WHERE idClient IN (?,?)"
cmd.Parameters.Append cmd.CreateParameter("id1", adInteger, adParamInput, 4, 20)
cmd.Parameters.Append cmd.CreateParameter("id2", adInteger, adParamInput, 4, 25)

Hierbij gaat ADO over z'n nek (er wordt niets verstuurd naar SQL Server)

Verwijderd

En als je die SELECT query nou in SQL server plaats in een stored procedure?
Dan ontvangt hij die @id's en zet ze op de juiste plaats.....zou toch moeten lukken!

of Set rst = cmd.Execute(Parameters:=Array('jouwWaarde1', 'jouwWaarde2'))

[ Voor 21% gewijzigd door Verwijderd op 07-01-2004 09:00 ]


Verwijderd

Stored proc maken

code:
1
2
3
4
5
6
7
8
9
p_test ( @p_1 varchar, @p_2 varchar ... )
as
begin
  declare @a table ( param varchar )
  if @p_1 is not null
    insert into @a values @p_1

  select  * from tab where veld in ( select param from @a )
end

[ Voor 4% gewijzigd door Verwijderd op 07-01-2004 10:16 ]


  • El_BingO
  • Registratie: Juli 2001
  • Laatst online: 22-04 10:47
Verwijderd schreef op 07 januari 2004 @ 08:57:
En als je die SELECT query nou in SQL server plaats in een stored procedure?
Dan ontvangt hij die @id's en zet ze op de juiste plaats.....zou toch moeten lukken!

of Set rst = cmd.Execute(Parameters:=Array('jouwWaarde1', 'jouwWaarde2'))
Kan dat zomaar? een array in 1 keer toewijzen aan de Parameters van een Command object? Ik gebruik op dit moment een methode waarbij de waarden van mijn array 1 voor 1 worden toegewezen aan een parameter.
ASP:
1
2
3
For teller=0 To Ubound(attributes)
      spCommand(teller+1) = attributes(teller)  
Next

Kan dit dus sneller?

Verwijderd

jeps, zoals ik dus al toonde ;)

Verwijderd

SQL Server kent array als datatype niet. Je kunt dus nooit een native array doorgeven.

Verwijderd

Verwijderd schreef op 07 januari 2004 @ 11:01:
SQL Server kent array als datatype niet. Je kunt dus nooit een native array doorgeven.
verschilt MSDE daarin dan van SQL Server???

staat gewoon in mn boekie hoor (op die manier!) ;)

Verwijderd

Topicstarter
Met datatype bedoelt TheChU wat je tussen de haakjes bij een stored procedure kunt gebruiken. En daar kun je dus geen array gebruiken, as far as i know...
Pagina: 1