我需要一些帮助,对于SQL我还是有些陌生。我有一个从另一个应用程序作为smartobject执行的存储过程。 te之前的代码看起来像第1部分中的代码。我根据第2部分更改了代码,以便存储过程首先查看Sales id类型实际上是否与来自存储过程的表成员资格中的成员资格号相比较然后在成员表中执行相同的操作。如果查询是3,并且会员编号是3,我希望它在会员表中使用到期日期,而不是使用IF的存储过程
SELECT @ExpiryDate = DATEADD(YEAR,1,DATEADD(d,-1,DATEADD(m, 0,@CreatedDate)))
即woudl364天添加到当前日期
SECTION1
USE [HotelStayWorkflow]
GO
/****** Object: StoredProcedure [dbo].[CP_Create_Card] Script Date: 3/7/2017 2:50:06 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[CP_Create_Card]
-- Add the parameters for the stored procedure here
@membershipNumber VARCHAR(MAX),
@CardId BIGINT = NULL OUTPUT,
@minsToFirstDeadline int = 2880,--defailt 2 days
@minsToSecondDeadline int = 5760 --default 4 days
AS
BEGIN
DECLARE @CreatedDate DATETIME = GETDATE()
DECLARE @ExpiryDate DATETIME
DECLARE @FirstDeadine DATETIME
DECLARE @SecondDeadline DATETIME
BEGIN
SELECT @ExpiryDate = DATEADD(YEAR, 1, DATEADD(d, -1, DATEADD(m, 0, @CreatedDate)))
END
SELECT @FirstDeadine = DATEADD(MINUTE,@minsToFirstDeadline,GETDATE())
SELECT @SecondDeadline = DATEADD(MINUTE,@minsToSecondDeadline,GETDATE())
--Create Card Linked to Membership below
IF EXISTS(SELECT * FROM Cards WHERE MembershipNumber = @membershipNumber AND Enabled = 1)
BEGIN
UPDATE Cards SET Enabled = 0 WHERE MembershipNumber = @membershipNumber AND Enabled = 1
END
INSERT INTO Cards (CardStatusId, MembershipNumber, PrintedDate, Created, Modified, ExpiryDate,FirstDeadline,SecondDeadline, Enabled)
VALUES(1, @membershipNumber, @CreatedDate, @CreatedDate, @CreatedDate, @ExpiryDate,@FirstDeadine,@SecondDeadline, 1)
SET @CardId = SCOPE_IDENTITY()
-- Return Card Id
END
第2节
USE [HotelStayWorkflow]
GO
/****** Object: StoredProcedure [dbo].[CP_Create_Card] Script Date: 3/7/2017 1:08:05 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER PROCEDURE [dbo].[CP_Create_Card]
-- Add the parameters for the stored procedure here
@membershipNumber VARCHAR(MAX),
@CardId BIGINT = NULL OUTPUT,
@minsToFirstDeadline int = 2880,--defailt 2 days
@minsToSecondDeadline int = 5760 --default 4 days
AS
BEGIN
DECLARE @CreatedDate DATETIME = GETDATE()
DECLARE @ExpiryDate DATETIME
DECLARE @FirstDeadine DATETIME
DECLARE @SecondDeadline DATETIME
BEGIN
IF EXIST (FROM Memberships WHERE MembershipNumber = @MembershipNumber AND SalesTypeId = 3 AND Enabled =1)
AND
IF EXIST (FROM Members WHERE MembershipNumber = @MembershipNumber AND Enabled =1)
SELECT @ExpiryDate = dbo.Members.MembershipExpiry
OR
SELECT @ExpiryDate = DATEADD(YEAR, 1, DATEADD(d, -1, DATEADD(m, 0, @CreatedDate)))
END
SELECT @FirstDeadine = DATEADD(MINUTE,@minsToFirstDeadline,GETDATE())
SELECT @SecondDeadline = DATEADD(MINUTE,@minsToSecondDeadline,GETDATE())
--Create Card Linked to Membership below
IF EXISTS(SELECT * FROM Cards WHERE MembershipNumber = @membershipNumber AND Enabled = 1)
BEGIN
UPDATE Cards SET Enabled = 0 WHERE MembershipNumber = @membershipNumber AND Enabled = 1
END
INSERT INTO Cards (CardStatusId, MembershipNumber, PrintedDate, Created, Modified, ExpiryDate,FirstDeadline,SecondDeadline, Enabled)
VALUES(1, @membershipNumber, @CreatedDate, @CreatedDate, @CreatedDate, @ExpiryDate,@FirstDeadine,@SecondDeadline, 1)
SET @CardId = SCOPE_IDENTITY()
-- Return Card Id
END
你在这里有什么问题? –
当我尝试在我添加的部分上运行我的存储过程时,它给了我错误,不知道我是否正确地使用了命令 –
您可以添加您的错误,以及您想要实现的问题以及我将尝试并帮助 –