Toon posts:

[SQL Server] Select met variabele list

Pagina: 1
Acties:

Verwijderd

Topicstarter
(Hoe) is het mogelijk een list variabele te declareren voor een select statement in MsSQL Server?

Ik bedoel daarmee het volgende:

code:
1
2
3
4
DECLARE @MyList <datatype>
SET @MyList = <listvalues>

SELECT * FROM table_name WHERE column_name IN (@MyList)


Welk datatype moet er gedeclareerd worden en hoe worden de listvalues ingevuld?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Bij mijn weten is dat niet mogelijk (correct me if I'm wrong). SQL kent geen 'arrays' of 'lists'.

[ Voor 22% gewijzigd door RobIII op 22-02-2007 11:56 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 10:26

TeeDee

CQB 241

Volgens mij kan je dit prima met een komma separated string aanpakken. Dus een varchar.

SQL:
1
select * from melp where blaat in('woei','melp','blaat','meuk')


edit:
hmm, beter lezen. Een list variable...
RobIII schreef op donderdag 22 februari 2007 @ 11:57:
[...]

Als je die 'woei'etc wil ontvangen als parameter in een SP zul je in dat geval al snel naar EXEC moeten gaan kijken omdat je in je SP dynamisch je SQL statement als string in mekaar moet gaan zitten plakken, en of dat de moeite is... :X
Yup, je hebt gelijk. Even helemaal buiten het SP gedeelte omgegaan.

[ Voor 61% gewijzigd door TeeDee op 22-02-2007 11:58 ]

Heart..pumps blood.Has nothing to do with emotion! Bored


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
TeeDee schreef op donderdag 22 februari 2007 @ 11:55:
Volgens mij kan je dit prima met een komma separated string aanpakken. Dus een varchar.

SQL:
1
select * from melp where blaat in('woei','melp','blaat','meuk')
Als je die 'woei'etc wil ontvangen als parameter in een SP zul je in dat geval al snel naar EXEC moeten gaan kijken omdat je in je SP dynamisch je SQL statement als string in mekaar moet gaan zitten plakken, en of dat de moeite is... :X

[ Voor 9% gewijzigd door RobIII op 22-02-2007 11:57 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 10:26

TeeDee

CQB 241

Misschien staan hier wat bruikbare tips tussen.

Ervan uitgaande dat een list variable==arraylist.

Heart..pumps blood.Has nothing to do with emotion! Bored


Verwijderd

Topicstarter
TeeDee schreef op donderdag 22 februari 2007 @ 11:55:
Volgens mij kan je dit prima met een komma separated string aanpakken. Dus een varchar.

SQL:
1
select * from melp where blaat in('woei','melp','blaat','meuk')
Op deze manier is het niet meer variabel en het volgende werkt niet:

SQL:
1
2
3
4
5
6
DECLARE @MyList varchar (255)
SET @MyList = 'woei','melp','blaat','meuk'
of
SET @MyList = 'woei,melp,blaat,meuk'

select * from melp where blaat in(@MyList)

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op donderdag 22 februari 2007 @ 12:13:
[...]


Op deze manier is het niet meer variabel en het volgende werkt niet:
Nee, dat klopt; heb je nog verder gekeken dan de eerste twee replies? ;)

[ Voor 27% gewijzigd door RobIII op 22-02-2007 12:23 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Ik doelde niet op een stored procedure, maar gewoon een statement om te debuggen in SQL Server Management Studio.
Maar na nog enig speurwerk trek ik de conclusie dat dit niet mogelijk is. Zo wel, hoor ik dat graag.

  • TeeDee
  • Registratie: Februari 2001
  • Laatst online: 10:26

TeeDee

CQB 241

Huh? Je wil dus een 'query' loslaten op je DB om te zien of je resultaten terugkrijgt?

- je kan een sproc maken, en deze uitvoeren
- je kan een query opbouwen (die toevalligerwijs op je sproc lijkt) en deze uitvoeren?

Of ik moet je helemaal verkeerd begrijpen?

Heart..pumps blood.Has nothing to do with emotion! Bored


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

SQL Server kent ook het table datatype, misschien dat je daar wat mee kan.

Today's subliminal thought is:

Pagina: 1