So schreiben Sie einen Cursor in einer gespeicherten Prozedur in SQL Server 2008

8

Ich habe zwei Tabellen in meiner Datenbank

Gutschein-Tabelle

  • id (int)
  • Name (nvarchar (max))
  • NoofUses (int)

CouponUse-Tabelle

  • id (int)
  • Couponid (int)
  • CreateDate (DatumZeit)

Immer wenn ein Nutzer auf einen Gutschein klickt, geht ein Eintrag in die Tabelle CouponUse , die die ID dieses Gutscheins enthält

Jetzt gibt es eine Spalte in der Tabelle coupon namens NoofUses . Ich möchte einen Cursor in eine gespeicherte Prozedur schreiben, die über couponuse table springt und sieht, wie viele Zeilen es für einen Coupon gibt und fülle diese Zahl in NoofUses im Coupon ein.

Ich habe diese Abfrage

%Vor%

gibt mir den Namen des Gutscheins und seine Anzahl von couponuse

Aber ich weiß nicht, wie man das in einer gespeicherten Prozedur mit einem Cursor implementiert?

Alles, was Sie über die Frage stellen, wird geschätzt, Danke

    
Smartboy 22.11.2012, 06:57
quelle

3 Antworten

10

Was ist falsch daran, einfach eine einfache, einfache UPDATE -Anweisung zu verwenden?

%Vor%

Das ist alles was benötigt wird! Kein unordentlicher und komplizierter Cursor, keine Schleife, keine RBAR-Verarbeitung (row-by-quallizing-row) ..... nur eine nette, einfache, saubere set-basierte SQL-Anweisung.

    
marc_s 22.11.2012, 08:06
quelle
10

Probieren Sie das folgende Snippet aus. Sie können die unten gespeicherte Prozedur von Ihrer Anwendung aufrufen, damit NoOfUses in der Coupontabelle aktualisiert wird.

%Vor%

Hoffe, das hilft!

    
Gowdhaman008 22.11.2012 07:14
quelle
0

Sie können einen Trigger erstellen, der die NoofUses -Spalte in Coupon table wann immer aktualisiert couponid wird in CouponUse table

verwendet

Abfrage:

%Vor%     
bharat 10.08.2017 05:48
quelle