Avatar billede milandt Nybegynder
28. december 2006 - 16:38 Der er 9 kommentarer og
1 løsning

afvikle sql i en SP

Hey,

Jeg har en tabel, som indeholder noget sql - f.eks. kunne et felt indeholde "EXEC sp_DeleteUser 32". Pågældende række indeholder også nogle kriterier for hvornår og om dette sql skal afvikles.

Jeg vil gerne lave en stored procedure der kan vælge denne række, og afvikle sql'en i pågældende felt. Kan dette lade sig gøre?

Sig til hvis spørgsmålet er uklart.
Avatar billede a1a1 Novice
28. december 2006 - 16:43 #1
det kommer lidt an på hvad du programmere i
hvis "gammel" asp, burde flg. være nok
oConn.Execute("EXEC sp_DeleteUser 32")
jeg går ud at 32 er et userID, og det er et parameter i din sp...
Avatar billede milandt Nybegynder
28. december 2006 - 16:55 #2
jeg vil skyde sql'en af inden fra min stored procedure..

jeg kunen sagtens skrive noget kode der hentede pågældende række ned, trak sql'en ud og bagefter executede det.. men som sagt vil jeg gøre dette fra en stored procedure, ikke fra min application.
Avatar billede lorentsnv Nybegynder
28. december 2006 - 17:02 #3
Exec er kommandoen for at eksekvere en sp i en sp, eller noget dynamisk SQL.

Du bør derfor kunne køre exec 'sp_deleteuser 32' direkte fra en sp.
Avatar billede arne_v Ekspert
28. december 2006 - 17:22 #4
DECLARE @sql NVARCHAR(1000)
SET sql = SELECT ...
EXEC(@sql)

maaske
Avatar billede arne_v Ekspert
28. december 2006 - 17:27 #5
ups der manglede en snabel-a

DECLARE @sql NVARCHAR(1000)
SET @sql = SELECT ...
EXEC(@sql)
Avatar billede milandt Nybegynder
28. december 2006 - 18:16 #6
Præcis arne_v

læg et svar
Avatar billede arne_v Ekspert
28. december 2006 - 22:25 #7
svar
Avatar billede milandt Nybegynder
29. december 2006 - 00:26 #8
Hmm.. et opfølgende spørgsmål, jeg håber du kan svare på..

Dit forslag virker umiddelbart hvis mit felt indeholder sql - f.eks. "delete from tblUsers where id = 32", men hvis den indeholder "EXEC sp_DeleteUser 32" virker det ikke..
Avatar billede milandt Nybegynder
29. december 2006 - 00:27 #9
og hvis jeg fjerner "EXEC" fra feltet i tabellen, får jeg fejlen:

'cannot find stored procedure 'sp_DeleteUser 32''.
Avatar billede milandt Nybegynder
29. december 2006 - 00:42 #10
ahh.....
EXEC(@sql)

ikke
EXEC @sql

My bad.. sov godt, og tak for hjælpen
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
Kategori
Computerworld tilbyder specialiserede kurser i database-management

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