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


Hjälp med en Sp i SQL2005

Postades av 2009-01-22 12:20:42 - Gert Lindholm, i forum sql-server/msde, Tråden har 3 Kommentarer och lästs av 1693 personer

Hej!
Jag har en Sp i SQL2005 som uppdaterar poster i en tabell.
Sen så vill jag lägga till delar av posten i en historik tabell
Jag vill ha med en koll att allt har gått igenom och om det inte gjort det göra en Rollback.
Men jag vet inte hur man gör det.
Tacksam för hjälp.
<Code #> ALTER PROCEDURE [dbo].[p_maintainLicenceNew] -- Add the parameters for the stored procedure here @parmDelete char(10) , @parmOrg int , @parmLicNbr char(20) , @parmFirstName nvarchar(50) , @parmSurName nvarchar(50) , @parmAdress nvarchar(50) , @parmCoAdress nvarchar(50) , @parmZipCode nvarchar(10) , @parmCity nvarchar(50) , @parmPhoneHome nvarchar(20) , @parmPhoneWork nvarchar(20) , @parmPhoneMobile nvarchar(20) , @parmFax nvarchar(20) , @parmEmail nvarchar(75) , @parmAge DateTime , @parmCountyId int , @parmCounty nvarchar(50) , @parmClubId nvarchar(20) , @parmClub nvarchar(50) , @parmLicType int , @parmOldHcp int , @parmInactive bit , @parmSex nchar(1) , @parmDateChanged DateTime , @parmOK int output AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Error as Default SET @parmOK = 1 DECLARE @varHcp int; DECLARE @varOldHcp int; DECLARE @varOldClubId int; DECLARE @varNewClubId int DECLARE @parmHistoryText nvarchar(1024) -- Validate Org IF(@parmOrg = '' OR @parmOrg = null) BEGIN RETURN 10 END -- Validate LicNbr IF(@parmLicNbr = '' OR @parmLicNbr = null) BEGIN RETURN 11 END -- Validate FirstName IF(@parmFirstName = '' OR @parmFirstName = null) BEGIN RETURN 12 END -- Validate SurName IF(@parmSurName = '' OR @parmSurName = null) BEGIN RETURN 13 END -- Select record to validate if exist SELECT @varHcp = Hcp FROM dbo.bo_Licence WHERE Org = @parmOrg AND LicNbr = @parmLicNbr IF (@@rowcount > 0) BEGIN -- Set Old Items SET @varOldHcp = (SELECT OldHcp FROM bo_Licence WHERE LicNbr = @parmLicNbr) SET @varOldClubId = (SELECT clubId FROM bo_Club WHERE ClubId = (SELECT ClubId FROM bo_Licence WHERE LicNbr = @parmLicNbr)) SET @varNewClubId = (SELECT clubId FROM bo_Club where ClubId = @parmClubId) -- Delete existing record IF (@parmDelete = 'DELETE') BEGIN DELETE FROM dbo.bo_Licence WHERE Org = @parmOrg AND LicNbr = @parmLicNbr IF (@@error <> 0) BEGIN RETURN 14 END END ELSE -- Update existing record BEGIN UPDATE dbo.bo_Licence SET [FirstName] = @parmFirstName , [SurName] = @parmSurName , [Adress] = @parmAdress , [CoAdress] = @parmCoAdress , [ZipCode] = @parmZipCode , [City] = @parmCity , [PhoneHome] = @parmPhoneHome , [PhoneWork] = @parmPhoneWork , [MobilePhone] = @parmPhoneMobile , [Fax] = @parmFax , [Email] = @parmEmail , [Age] = @parmAge , [CountyId] = @parmCountyId , [ClubId] = @parmClubId , [LicType] = @parmLicType , [OldHcp] = @parmOldHcp , [Inactive] = @parmInactive , [Sex] = @parmSex WHERE Org = @parmOrg AND LicNbr = @parmLicNbr IF @parmLicType =20 BEGIN SET @parmHistoryText = 'Byte av klubb' END ELSE IF @parmLicType = 10 BEGIN SET @parmHistoryText = 'Ny Licens' END ELSE IF @parmLicType = 25 BEGIN SET @parmHistoryText = 'Byte av Hcp' END ELSE IF @parmLicType = 30 BEGIN SET @parmHistoryText = 'Återinträde' END ELSE IF @parmLicType = 40 BEGIN SET @parmHistoryText = 'Avlicensierad' END ELSE BEGIN -- Om det är licenstyp byte SET @parmHistoryText = 'Byte av license Typ' END INSERT INTO bo_LicenceHistory ( HistoryLicNbr , HistoryDate , HistoryType , HistoryOldClubId , HistoryNewClubId , HistoryOldHcp , HistoryNewHcp , HistoryText , DateProceed ) VALUES ( @parmLicNbr , @parmDateChanged , @parmLicType , @varOldClubId , @parmClubId , @varOldHcp , @varOldHcp , @parmHistoryText , GETDATE()) END END ELSE -- Create new record BEGIN IF (@parmDelete <> 'DELETE') BEGIN INSERT INTO dbo.bo_Licence ( Org , LicNbr , FirstName , SurName , Age , ClubId , OldHcp ) VALUES ( @parmOrg , @parmLicNbr , @parmFirstName , @parmSurName , @parmAge , @parmClubId , @parmOldHcp ) IF (@@error <> 0) BEGIN RETURN 17 END END END SET @parmOK = 0 RETURN 0 END </Code>


Svara

Sv: Hjälp med en Sp i SQL2005

Postades av 2009-01-22 13:42:30 - Håkan Borneland

Hej

Vill bara påpeka en sak i din SP.
I början där du gör ett par "Valideringar", så skriver du så här:

<code>
-- Validate Org
IF(@parmOrg = '' OR @parmOrg = null)
BEGIN
RETURN 10
END
</code>

I just det här exemplet så försöker du kolla om @parmOrg är lika med en tom sträng.
@parmOrg är en int så det kan du ta bort.
Sedan så gör du en kontroll om parametern är = NULL.
I SQL Server skriver man "@parmOrg IS NULL" om man vill kontrollera NULL.
Som det är nu så blir IF satsen aldrig "TRUE" om parametern är NULL.

Har inte tid att hjälpa dig med det andra just nu.
Återkommer senare om ingen annan gör det före.


Svara

Sv: Hjälp med en Sp i SQL2005

Postades av 2009-01-23 17:47:55 - Linus Johansson

Du kan lägga allt i en TRY-CATCH som skulle hantera de logiska felen och rulla tillbaka om det går fel. Starta en transaktion innanför TRY bara. Sedan får du hantera business felen med egen felhantering. ungefär som du gör nu fast inte med RETURN om det inte är som du vill utan ha istället en GOTO ERROR; som du placerar längst ner i koden men innan CATCH'en. Om du hamnar där så rullar du tillbaka allt och returnerar lämpligt fel. Har all uppdatering gått bra så ser du till att hoppa förbi ERROR avsnittet med hjälp av en GOTO END_SP; som du lämpligt placerar efter ERROR.

Lycka till


Svara

Sv:Hjälp med en Sp i SQL2005

Postades av 2009-01-26 09:17:28 - Andreas Thorarins


finns en bra artikel i ämnet här:
http://www.4guysfromrolla.com/webtech/041906-1.shtml

men ungefär så här kan du göra.

BEGIN TRY
BEGIN TRANSACTION

... din kod ...

COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
END CATCH


Svara

Nyligen

  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов
  • 00:01 DL Van Tuning | Exclusive Body Kit
  • 12:08 Indian casino
  • 04:14 Vad finns det för kratomalternativ
  • 14:16 Indian online casino
  • 14:15 Indian online casino
  • 08:28 Butiksskyltar: Hur upplever utbude

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 873
27 965
271 770
509
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