| Author |
Topic |
|
timothymannah
Starting Member
14 Posts |
Posted - 2005-06-08 : 01:21:18
|
| My stored procedure inserts the final if twice when the value of @FamilyMembers = 4 i think the if statement logic need a look at....any ideas?CREATE PROCEDURE [dbo].[spPreTranInsert] (@PreTransactionID [int]=000000 output, @Title [varchar](5), @GivenName [varchar](50), @LastName [varchar](50), @DOB [varchar](10), @Address [varchar](250), @HomePhone [varchar](50), @WorkPhone [varchar](50), @MobilePhone [varchar](50), @PreferedPhone [varchar](50), @City [varchar](50), @State [char](10), @PostCode [varchar](20), @Country [varchar](200), @CardNumber [varchar](50), @CardType [varchar](15), @Email [varchar](250), @ExpiryDate [varchar](10), @Amount [varchar](20), @tranDate [varchar](10), @FamilyMembers [int], -- 2nd members information @FirstName2 [varchar](50), @LastName2 [varchar](50), @DOB2 [varchar](10), @ConcessionCard2 [varchar](20), @Diagnoses2 [varchar](5), @YearDiag2 [varchar](10), -- 3rd members information @FirstName3 [varchar](50), @LastName3 [varchar](50), @DOB3 [varchar](10), @ConcessionCard3 [varchar](20), @Diagnoses3 [varchar](5), @YearDiag3 [varchar](10), -- 4th members dta @FirstName4 [varchar](50), @LastName4 [varchar](50), @DOB4 [varchar](10), @ConcessionCard4 [varchar](20), @Diagnoses4 [varchar](5), @YearDiag4 [varchar](10)) AS INSERT INTO [dbo].[tbPreTransactions] ([Title], [GivenName], [LastName], [DOB], [Address], [HomePhone], [WorkPhone], [MobilePhone], [PreferedPhone], [City], [State], [PostCode], [Country], [CardNumber], [CardType], [Email], [expDate], [TotalFee], [tranDate], [FamilyMembers]) VALUES (@Title, @GivenName, @LastName, @DOB, @Address, @HomePhone, @WorkPhone, @MobilePhone, @PreferedPhone, @City, @State, @PostCode, @Country, @CardNumber, @CardType, @Email, @ExpiryDate, @Amount, @tranDate, @FamilyMembers) SET @PreTransactionID = @@IDENTITY DECLARE @MySystemID int SELECT @MySystemID = MemFamilyId FROM [dbo].[tbPreTransactionsFamily] WHERE PreTransactionID = @PreTransactionID Declare @FamilyNo2 int set @FamilyNo2 = 2 Declare @FamilyNo3 int set @FamilyNo3 = 3 Declare @FamilyNo4 int set @FamilyNo4 = 4 IF (@FamilyMembers = 4) -- only insert the record if there 3 extra members BEGIN INSERT INTO [dbo].[tbPreTransactionsFamily] ([PreTransactionID],[FirstName],[LastName],[DOB],[ConcessionCard],[Diagnoses],[YearDiag],[FamilyNo]) VALUES (@PreTransactionID, @FirstName2, @LastName2, @DOB2, @ConcessionCard2, @Diagnoses2, @YearDiag2, @FamilyNo2) INSERT INTO [dbo].[tbPreTransactionsFamily] ([PreTransactionID],[FirstName],[LastName],[DOB],[ConcessionCard],[Diagnoses],[YearDiag],[FamilyNo]) VALUES (@PreTransactionID, @FirstName3, @LastName3, @DOB3, @ConcessionCard3, @Diagnoses3, @YearDiag3, @FamilyNo3) INSERT INTO [dbo].[tbPreTransactionsFamily] ([PreTransactionID],[FirstName],[LastName],[DOB],[ConcessionCard],[Diagnoses],[YearDiag],[FamilyNo]) VALUES (@PreTransactionID, @FirstName4, @LastName4, @DOB4, @ConcessionCard4, @Diagnoses4, @YearDiag4, @FamilyNo4) END IF (@FamilyMembers = 3) -- only insert the record if there 2 extra member BEGIN INSERT INTO [dbo].[tbPreTransactionsFamily] ([PreTransactionID],[FirstName],[LastName],[DOB],[ConcessionCard],[Diagnoses],[YearDiag],[FamilyNo]) VALUES (@PreTransactionID, @FirstName2, @LastName2, @DOB2, @ConcessionCard2, @Diagnoses2, @YearDiag2, @FamilyNo2) INSERT INTO [dbo].[tbPreTransactionsFamily] ([PreTransactionID],[FirstName],[LastName],[DOB],[ConcessionCard],[Diagnoses],[YearDiag],[FamilyNo]) VALUES (@PreTransactionID, @FirstName3, @LastName3, @DOB3, @ConcessionCard3, @Diagnoses3, @YearDiag3, @FamilyNo3) END IF (@FamilyMembers = 2) -- only insert the record if there 1 extra member INSERT INTO [dbo].[tbPreTransactionsFamily] ([PreTransactionID],[FirstName],[LastName],[DOB],[ConcessionCard],[Diagnoses],[YearDiag],[FamilyNo]) VALUES (@PreTransactionID, @FirstName2, @LastName2, @DOB2, @ConcessionCard2, @Diagnoses2, @YearDiag2, @FamilyNo2)GOHere it is |
|
|
raclede
Posting Yak Master
180 Posts |
Posted - 2005-06-08 : 01:48:32
|
you may want to use to so that we can read it properly. your sp is so big, try splitting it into groups.. and make a generic sp for actions that are repeated like for this one:INSERT INTO [dbo].[tbPreTransactionsFamily] ([PreTransactionID],[FirstName],[LastName],[DOB],[ConcessionCard],[Diagnoses],[YearDiag],[FamilyNo])CREATE PROCEDURE Sample(@PreTransactionID blahblah) then use EXEC Sample @FirstName, @LastName2 .... in the main SP"If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside. " raclede |
 |
|
|
robvolk
Most Valuable Yak
15732 Posts |
Posted - 2005-06-08 : 08:15:09
|
| I shortened this a bit, it should work properly:CREATE PROCEDURE [dbo].[spPreTranInsert](@PreTransactionID [int]=000000 output,@Title [varchar](5),@GivenName [varchar](50),@LastName [varchar](50),@DOB [varchar](10),@Address [varchar](250),@HomePhone [varchar](50),@WorkPhone [varchar](50),@MobilePhone [varchar](50),@PreferedPhone [varchar](50),@City [varchar](50),@State [char](10),@PostCode [varchar](20),@Country [varchar](200),@CardNumber [varchar](50),@CardType [varchar](15),@Email [varchar](250),@ExpiryDate [varchar](10),@Amount [varchar](20),@tranDate [varchar](10),@FamilyMembers [int],-- 2nd members information@FirstName2 [varchar](50),@LastName2 [varchar](50),@DOB2 [varchar](10),@ConcessionCard2 [varchar](20),@Diagnoses2 [varchar](5),@YearDiag2 [varchar](10),-- 3rd members information@FirstName3 [varchar](50),@LastName3 [varchar](50),@DOB3 [varchar](10),@ConcessionCard3 [varchar](20),@Diagnoses3 [varchar](5),@YearDiag3 [varchar](10),-- 4th members dta@FirstName4 [varchar](50),@LastName4 [varchar](50),@DOB4 [varchar](10),@ConcessionCard4 [varchar](20),@Diagnoses4 [varchar](5),@YearDiag4 [varchar](10))ASSET NOCOUNT ONINSERT INTO [dbo].[tbPreTransactions] ([Title],[GivenName],[LastName],[DOB],[Address],[HomePhone],[WorkPhone],[MobilePhone],[PreferedPhone],[City],[State], [PostCode],[Country],[CardNumber],[CardType],[Email],[expDate],[TotalFee],[tranDate],[FamilyMembers])SELECT @Title,@GivenName,@LastName,@DOB,@Address,@HomePhone,@WorkPhone,@MobilePhone,@PreferedPhone,@City,@State,@PostCode,@Country,@CardNumber,@CardType,@Email,@ExpiryDate,@Amount,@tranDate,@FamilyMembersSET @PreTransactionID = @@IDENTITYINSERT INTO [dbo].[tbPreTransactionsFamily] ([PreTransactionID],[FirstName],[LastName],[DOB],[ConcessionCard],[Diagnoses],[YearDiag],[FamilyNo])SELECT @PreTransactionID, @FirstName2,@LastName2,@DOB2, @ConcessionCard2,@Diagnoses2,@YearDiag2,@FamilyNo2WHERE @FamilyMembers>=2INSERT INTO [dbo].[tbPreTransactionsFamily]([PreTransactionID],[FirstName],[LastName],[DOB],[ConcessionCard],[Diagnoses],[YearDiag],[FamilyNo])SELECT @PreTransactionID,@FirstName3,@LastName3,@DOB3,@ConcessionCard3,@Diagnoses3,@YearDiag3,@FamilyNo3WHERE @FamilyMembers>=3INSERT INTO [dbo].[tbPreTransactionsFamily]([PreTransactionID],[FirstName],[LastName],[DOB],[ConcessionCard],[Diagnoses],[YearDiag],[FamilyNo])SELECT @PreTransactionID,@FirstName4,@LastName4,@DOB4,@ConcessionCard4,@Diagnoses4,@YearDiag4,@FamilyNo4WHERE @FamilyMembers>=4I took out the @MySystemID stuff because it was not used anywhere. |
 |
|
|
|
|
|