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


Återanvändning av inparametrar i en sp

Postades av 2001-09-12 13:03:00 - Johan Åsenlund, i forum sql-server/msde, Tråden har 7 Kommentarer och lästs av 1131 personer

Hej !!

Jag har 2 inparametrar till min sp, nu skulle jag vilja
använda en av dessa i select satsen, kan man göra så
på något enkelt sätt ?

så skulle jag vilja göra ;-)

alter proc test
@id int,
@type int
as
select Table1.[@type]
FROM Table1
WHERE Table1.id=@id

/Johan


Svara

Sv: Återanvändning av inparametrar i en sp

Postades av 2001-09-12 14:16:00 - Christoffer Hedgate

alter proc test
@id int,
@type int
as
select @type
FROM Table1
WHERE Table1.id=@id


eller menade du inte så?


Svara

Sv: Återanvändning av inparametrar i en sp

Postades av 2001-09-12 14:25:00 - Johan Åsenlund

@type är ett column namn i tabellen Table1 i mitt fall heter
columnerna 1,2,3,4 och 5.
Inparameternm @type är alltså den columnen jag vill läsa ifrån.

/Johan


Svara

Sv: Återanvändning av inparametrar i en sp

Postades av 2001-09-12 17:11:00 - Christoffer Hedgate

Då får du skapa en SQL sats som en sträng, och exekvera den med sp_executesql (eller EXECUTE). Kolla mitt tips på min site för mer info om detta.

http://hedgate.edithispage.com/2001/04/02


Svara

Sv: Återanvändning av inparametrar i en sp

Postades av 2001-09-12 17:21:00 - Johan Åsenlund

Är det alltså det enda alternativet ?
Skulle helst vilja slippa stränghantering i sp'en.

Är det nån som vet prestanda skillnaden mellan stränghantering
eller case, if satser ??

/Johan


Svara

Sv: Återanvändning av inparametrar i en sp

Postades av 2001-09-12 19:10:00 - Lars Berg

create procedure x @id int,@type int
as
begin
select case @type when 1 then c1
when 2 then c2
when 3 then c3
when 4 then c4
when 5 then c5 end as c
from t where id = @id
end

är effektivare än använda exec med en sträng.

I och för sig så tycker jag att om man har behov att ställa sådana frågor så har man en suspekt datamodell.


Svara

Sv: Återanvändning av inparametrar i en sp

Postades av 2001-09-12 19:27:00 - Andreas Hillqvist

Tänk på att den får göra jämförelsen för varje post. Mycket bättre att ställa upp en ifsats.

create procedure x @id int,@type int
as
begin
IF @type = 1
SELECT c1
FROM Tabell
WHERE id = @id
ELSEIF @type = 2
SELECT c2
FROM Tabell
WHERE id = @id
ELSEIF @type = 3
SELECT c3
FROM Tabell
WHERE id = @id
ELSEIF @type = 4
SELECT c4
FROM Tabell
WHERE id = @id
ELSEIF @type = 5
SELECT c5
FROM Tabell
WHERE id = @id
END

Osäker på syntaget. Men tror det bär funka.


Svara

Sv: Återanvändning av inparametrar i en sp

Postades av 2001-09-13 09:12:00 - Christoffer Hedgate

Jag håller med Andreas om att det är bättre att använda IF än CASE i detta fallet, och håller även med Lars om att datamodellen verkar suspekt.... Däremot håller jag inte med om att man inte ska använda en sträng med SQL som exekveras dynamiskt, av följande skäl:

* Det är inte säkert att man vet hur många kolumner som @type kan 'vara'. Även om man vet det så måste man skriva om proceduren när ytterligare en möjlig kolumn läggs till.

* Om man exekverar SQL-strängen enligt det tips jag nämnde så får man inga större prestandaproblem. Att skapa SQL-strängen tar ingen kraft, och om man sedan använder sig av sp_executesql så får man en separat exekveringsplan, kompilerad och klar, för varje sträng, och i praktiken kommer det att bli i princip som att ha flera olika procedurer att anropa från klienten.


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 615
27 953
271 709
440
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