Avatar billede bocker Nybegynder
22. november 2002 - 17:21 Der er 4 kommentarer og
1 løsning

Dynamisk query

Hvis man nu har en tabel hvor man har følgende felter: item_value, item_table, item_column... Og vi siger deres indhold er:

value = 123
table = 'adresser'
column_match = 'id'
column_lookup = 'navn'

Dette skal så blive til følgende query:

SELECT column_lookup FROM table WHERE column_match=id

Altså:

SELECT navn FROM adresser WHERE id=123

Det har jeg egentlig fået lavet vha en SP, så den kan returnere det felt. Men hvordan kan jeg få retuneret denne værdi så jeg kan få den med i den query jeg arbejder med?
Avatar billede lgy Nybegynder
22. november 2002 - 17:27 #1
Du kan ikke lave en SP som er generisk. Det er netop fordelen ved SP at de bliver kompilet af Serveren, hvor der opnåes en højere performance.

Lars
Avatar billede bocker Nybegynder
22. november 2002 - 17:37 #2
Øhm... Hvis du nu har en SP med følgende parameter:

@Table varchar(100),
@Match varchar(100),
@Lookup varchar(100),
@Id int

Så kan du jo gøre følgende:

DECLARE @strSQL varchar(5000)
SET @strSQL = 'SELECT ' + @Lookup + ' FROM ' + @Table + ' WHERE ' + @Match + '=' + @Id
EXEC (@strSQL)

Så vil den jo returnere et recordset med disse.
Avatar billede kichian Nybegynder
22. november 2002 - 22:06 #3
Men i tråd med det Igy skriver, så giver det ABSOLUT ingen fordele at lave bockers SP. Det vil rent faktisk tage længere tid end bare at fyre den af som "plain" SQL.
Avatar billede kichian Nybegynder
22. november 2002 - 22:10 #4
Oh oh. det gælder om at læde hvad du skriver:

select * from gurli where gurli.felt in (select returværdi from exec ::dinSP)
Avatar billede kichian Nybegynder
22. november 2002 - 22:17 #5
Der var jeg for hurtig!!

Se http://www.eksperten.dk/spm/284713
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester