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


Behöver hjälp med tänket kring en SP. [ LÖST ]

Postades av 2002-10-03 17:27:36 - Tommie Severinsson, i forum sql-server/msde, Tråden har 8 Kommentarer och lästs av 789 personer

Såhär blev min sp, efter diverese F1 i sql.
Eftersom jag var på en tänkande stadium ( inte samma som kod stadium) så kunde jag inte specificera mig mer än som jag gjort nedanför.

Tack för sparkarna i cursor riktningen och tack CH för dina exempel.

Såhär blev det tillslut (Jag är inte sql expert, men det funkar) :)

<code>
CREATE PROC Sp_UpdateReciveSupplier

@RowNumber int, @Delivered decimal,
@DeliveredNow decimal, @DeliveryNote int, @Date_ datetime, @EndDelivered int, @LineNumber numeric
AS
SET NOCOUNT ON

DECLARE @LastChanged datetime, @ProdNumber varchar(20), @Level_ int, @Reference varchar(20), @Number varchar(20),
@ItemNumber varchar(20), @Quantity decimal, @Date__ datetime, @AcceptBy int, @StockLock varchar(10),
@CreditorAccount varchar(10), @ShowOnWeb int, @DataSet varchar(3),
@RowNumber_ int

DECLARE supplier_cursor CURSOR
FOR SELECT DATASET, ROWNUMBER, LASTCHANGED, PRODNUMBER, LEVEL_, REFERENCE, NUMBER_, ITEMNUMBER, QTY, ACCEPTBY, STOCKLOCK, CREDITORACCOUNT, DATE_, SHOWONWEB
FROM dbo.ERECIVED
WHERE ROWNUMBER = @RowNumber

OPEN supplier_cursor

FETCH NEXT FROM supplier_cursor
INTO @DataSet, @RowNumber_, @LastChanged, @ProdNumber, @Level_, @Reference, @Number, @ItemNumber, @Quantity, @AcceptBy, @StockLock, @CreditorAccount, @Date__, @ShowOnWeb

INSERT INTO dbo.ERECIVED (DATASET, ROWNUMBER, LASTCHANGED, PRODNUMBER, LEVEL_, REFERENCE, NUMBER_, ITEMNUMBER, QTY, DELIVERED, DELIVEREDNOW, ENDDELIVERED, DATE_, DELIVERYNOTE, ACCEPTBY, STOCKLOCK, CREDITORACCOUNT, WEBCREATED, SHOWONWEB, LINENO_)
VALUES (@DataSet, @RowNumber_, @LastChanged, @ProdNumber, @Level_, @Reference, @Number, @ItemNumber, @Quantity, @DeliveredNow, @Delivered, @EndDelivered, @Date__, @DeliveryNote, @AcceptBy, @StockLock, @CreditorAccount, '1', @ShowOnWeb, @LineNumber)

UPDATE dbo.ERECIVED SET DELIVERED = @DeliveredNow, Date_ = @Date_
WHERE ROWNUMBER = @RowNumber

FETCH NEXT FROM supplier_cursor
INTO @DataSet, @RowNumber_, @LastChanged, @ProdNumber, @Level_, @Reference, @Number, @ItemNumber, @Quantity, @AcceptBy, @StockLock, @CreditorAccount, @Date__, @ShowOnWeb

CLOSE supplier_cursor
DEALLOCATE supplier_cursor
GO
</code>

Fungerar utmärkt på 1 rad som skall uppdateras och ja... många många många rader... Tipsa mig gärna på hur denna kan göras effektivare.


Svara

Sv: Behöver hjälp med tänket kring en SP.

Postades av 2002-10-03 20:16:04 - Johan Idstam

sparken heter 'cursor', men det är nästan alltid fel lösning
när man måste ta till en cursor i en SP.

Om det gåt att lösa med tex en uppdatering baserad på en join
är det mycket bättre.

/johan/


Svara

Sv: Behöver hjälp med tänket kring en SP.

Postades av 2002-10-03 21:42:44 - Andreas Hillqvist

Beskriv vad du vill göra så kan vi komma med alterantiv.


Svara

Sv: Behöver hjälp med tänket kring en SP.

Postades av 2002-10-04 00:05:52 - Pontus Wång

Cursors kan du se exempel på i [N&#229;gon som har en effektivare l&#246;sning &#228;n den h&#228;r?] , men som johan säger, man måste ha gått långt innan man behöver dom (om inte låg utvecklingstid prioriteras framför prestanda)...


Svara

Sv: Behöver hjälp med tänket kring en SP.

Postades av 2002-10-04 08:51:53 - Tommie Severinsson

Beskriv vad jag vill göra.. my god men.. ser ni inte det i första alternativet.. ;)

Skall kolla på cursors..

tack för "hjälpen"..


Svara

Sv: Behöver hjälp med tänket kring en SP.

Postades av 2002-10-04 15:48:02 - Andreas Hillqvist

Typ du ska modifiera data. Du säger inte på vilket sätt. Eller beskriver hur du vill förändra den.

Så nej det är omöjligt att ens försöka gissa vad du vill åstakomma med din data. Om duskulle avslöjat det kanske vi skulle kunna föreslå en lösning som är betydlit effektivare och snyggare.

Men om du inte vill det. Så är det inte vårt problem.


Svara

Sv: Behöver hjälp med tänket kring en SP.

Postades av 2002-10-04 16:30:10 - Christoffer Hedgate

Problemet är att du (alla ni som nämner cursors) tänker procedurellt. SQL är inget procedurellt språk, det är set-baserat. Som Andreas säger, exakt vad vill du göra? Något sånt här kanske ger dig en spark i rätt riktning:

update foo
set a = bar.b
from foo f
inner join bar b on f.c = bar.d
where bar.e = @foobar

Detta är iofs inte riktigt ANSI standard eller speciellt snyggt, men det fungerar mycket bättre än en cursor. Du kanske klarar dig med en vanlig:

UPDATE foo
SET a = @foobar
WHERE b = (SELECT c FROM bar WHERE d = @xyz)


Svara

Sv: Behöver hjälp med tänket kring en SP. [ LÖST ]

Postades av 2002-10-08 17:21:32 - Tommie Severinsson

Ja.. löst.. ;)


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 617
27 953
271 709
5 719
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