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


Dynamisk SQL i Stored procedures

Postades av 2000-11-01 13:21:00 - Jörgen Jäderberg, i forum databaser, Tråden har 7 Kommentarer och lästs av 1454 personer

Hej

Har ett problem:

Jag skickar med ett antal parametrar in i en SP. Inne i den bygger jag upp en SQL-sats dynamiskt beroende på värdena som kommer in.

Problemet kommer när jag skall Exekverera denna SQL, jag vill komma åt värdet som returneras, men har inte lyckats ännu!!!

Typexempel:

Declare @SQL As VarChar(4000),
@Var1 As VarChar(10),
@Antal As Int

Set @SQL = 'Select Count(*) As Antal From tblTabell Where'

If @Var1 Is Null
Begin
Set @SQL = @SQL + ' fldField Is Null'
End
Else
Begin
Set @SQL = @SQL + ' fldField1 = ''' + @Var1 + ''''
End

Här kommer problemet, hur Exekverera denna SQL-sats så att jag får in antalet i @Antal??

Hoppas på hjälp!!
/Jörgen


Svara

Sv: Dynamisk SQL i Stored procedures

Postades av 2000-11-01 14:30:00 - Christoffer Hedgate

Om du absolut vill exekvera dynamisk SQL i proceduren ska du använda EXECUTE. Men jag hade gjort så här istället:

If @Var1 Is Null
Begin
Select @antal = Count(*) From tblTabell Where fldField Is Null
End
Else
Begin
Select @antal = Count(*) From tblTabell Where fldField1 = @Var1
End


Svara

Sv: Dynamisk SQL i Stored procedures

Postades av 2000-11-01 14:48:00 - Jörgen Jäderberg

Hej och tack för svaret!

Nja, Exec har jag givetvis använt (skulle naturligtvis skrivit det också).

Problemet är att jag vill ha ut värdet från denna fråga i variabeln @Antal.

Hade det bara varit en variabel som skulle kontrolleras har jag hållit med dig, nu är det 10 stycken som kan vara null eller inte. Finns kanske ett mycket smidigare sätt att lösa detta, men jag har inte kommit på det ännu.

Jag vill alltså att det skall se ut så här ungefär:

Set @Antal = Exec @SQL

/Jörgen


Svara

Sv: Dynamisk SQL i Stored procedures

Postades av 2004-03-21 01:31:26 - Simon Karlsson

Ah, det är nu det börjar bli krångligt ser du..

För att uppnå det resultatet måste du köra med sp_executesql
Jag tar ett eget exempel här för att du lättare ska hänga med.



Låt oss säga att vi vill returnera en rowcount(*) med en dynamisk wherecluse.Det skulle kunna se ut såhär

<code>
if .. någoting
begin
@set minwhere= 'authors=nisse'
end

@set vSql = 'set @rows = select count(*) from tbl1 where' + @minwhere
EXEC sp_executesql @vSql, N'@rows int OUTPUT', @rows OUTPUT
</code>


Ser du att det är en set @rows inuti själva variabeln, det innebär att det finns en variabel att hämta från denna när vi exekverar den och det gör vi med.

- Det här ser aningen snurrigt ut men det den gör är att den talar om att vi vill hämta variabeln @rows och lagra den i en variabel som jag valt att döpa till samma namn.

Efter att du kört den så har du värdet från din dynamiska vSql-sträng i din "lokal" @rows eller vad man ska kalla det :)

/Simon


Svara

Sv: Dynamisk SQL i Stored procedures

Postades av 2004-03-21 01:32:55 - Simon Karlsson

sorry missade att den var 4 år gammal =) hahaha


Svara

Sv: Dynamisk SQL i Stored procedures

Postades av 2004-03-21 03:42:07 - Andreas Hillqvist

Borde du inte kunna skriva:
<code>

Declare @Var1 As VarChar(10),
@Var2 As VarChar(10),
@Antal As Int

SET @Antal = (SELECT Count(*) As Antal FROM tblTabell Where ((fldField1 Is Null AND @Var1 Is Null) OR fldField1 = @Var1) AND ((fldField2 Is Null AND @Var2 Is Null) OR fldField2 = @Var2))
</code>
Vet inte om den kommer var bättre eller sämre en en dynamisk SQL sats.


Svara

Sv: Dynamisk SQL i Stored procedures

Postades av 2004-03-21 10:44:51 - Håkan Borneland

Vill du få med värden ut från din SP?
Då måste du deklarera någon av dina inparametrar som "output",
eller ha en "return" sats som returnerar värdet.

//Håkan


Svara

Nyligen

  • 17:03 Getmancar your go-to carsharing
  • 14:07 Games
  • 17:54 Vegastars New Zealand
  • 16:56 Verde Casino Danmark
  • 13:54 Vegastars: Top Australian Online C
  • 21:28 Chicken Road Casino Game
  • 21:21 1xBet Promo Code 2025
  • 18:37 Remove the bumper in AUDI

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 570 994
27 965
271 785
1 209
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