Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Stored procedure

Postades av 2004-12-06 12:00:36 - Ola Axelsson, i forum sql-server/msde, Tråden har 6 Kommentarer och lästs av 901 personer

Hej.


Jag har problem när jag ska göra ett where urval med in i en stored procedure. Se exempel.

Vi säger att id är '123123123','516515156151','1515665156'


@id varchar(4000)

select *from myTable where id in
(
@id
)



Något som vet hur man löser detta problem?


Svara

Sv: Stored procedure

Postades av 2004-12-06 12:07:44 - Patrik Löwendahl

REATE FUNCTION intlist_to_tbl (@list varchar(8000))
RETURNS @tbl TABLE (listid int IDENTITY(1,1),val int) AS
BEGIN
DECLARE @ix int,
@pos int,
@str varchar(8000),
@num int
SET @pos = 1
SET @ix = 1
WHILE @ix > 0
BEGIN
SET @ix = charindex(',', @list, @pos)
IF @ix > 0
SET @str = substring(@list, @pos, @ix - @pos)
ELSE
SET @str = substring(@list, @pos, len(@list))
SET @str = ltrim(rtrim(@str))
IF @str LIKE '%[0-9]%' AND
(@str NOT LIKE '%[^0-9]%' OR
@str LIKE '[-+]%' AND
substring(@str, 2, len(@str)) NOT LIKE '[-+]%[^0-9]%')
BEGIN
SET @num = convert(int, @str)
INSERT @tbl (val) VALUES(@num)
END
SET @pos = @ix + 1
END
RETURN
END


Svara

Sv: Stored procedure

Postades av 2004-12-06 12:12:17 - Niclas Blomquist

Till exempel kan du i den lagrade proceduren bygga ihop den sql-sats som ska exekveras:

create procedure minprocedur
@id nvarchar(4000)
as
declare @sql nvarchar(4000)

set N'select * from myTable where id in (' + @id ')'
exec sp_executesql @sql


Detta kommer att fungera. Var bara noggrann med att få med apostroferna i anropet av proceduren. Om man gör det i SQL Query Analyzer ser det ut såhär:

exec minprocedur '''123123123'', ''516515156151'', ''1515665156'''

Detta bygger på att man utnyttjar den lagrade proceduren sp_executesql och skickar en textsträng till den.
//Niclas Blomquist


Svara

Sv:Stored procedure

Postades av 2004-12-07 08:59:38 - Lisbet Markland

Är exemplet verkligen helt korrekt? Borde du inte tilldela @sql din select-sats, dvs
set @sql = N'select * from myTable where id in (' + @id ')'.

Utöver det, ett väldigt användbart exempel. Jag har letat efter ett sätt att kunna skicka med en IN-sträng

/Lisbet


Svara

Sv: Stored procedure

Postades av 2004-12-07 09:04:13 - Per Hultqvist

Båda förslagen som du fått och flera andra diskuteras i detalj på följande hemsida :

http://www.sommarskog.se/dynamic_sql.html


Svara

Sv:Stored procedure

Postades av 2004-12-07 22:27:56 - Per Karlsson

En nackdel med att använda dynamisk sql är att detta kräver att användaren har behörighet till de tabeller som ingår. Detta krävs inte annars om man använder sp:s. Då räcker det med exekveringsrättighet på sp:n.

/Pelle


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
1 082
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies