Skip to content

Instantly share code, notes, and snippets.

@ahmadaghazadeh
Last active March 2, 2017 10:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ahmadaghazadeh/675beabf5ac6ec8980acfd26f61c5077 to your computer and use it in GitHub Desktop.
Save ahmadaghazadeh/675beabf5ac6ec8980acfd26f61c5077 to your computer and use it in GitHub Desktop.
ALTER PROCEDURE [dbo].[sp_Car_Insert]
@RunDate BIGINT ,
@CarNo NVARCHAR(50) ,
@Volume INT ,
@Weight SMALLINT ,
@CarName NVARCHAR(50) ,
@InUse BIT ,
@UserID INT = NULL ,
@CarID TINYINT OUTPUT
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION;
INSERT INTO dbo.Car
( CarID ,
CarNo ,
Volume ,
Weight ,
CarName ,
InUse ,
UserID ,
StartDate
)
OUTPUT INSERTED.*
VALUES ( ( SELECT ISNULL(MAX(c.CarID), 0) + 1
FROM Car c
) ,
@CarNo ,
@Volume ,
@Weight ,
@CarName ,
@InUse ,
ISNULL(@UserID, dbo.fn_GetUserID()) ,
@RunDate
);
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
IF ( @@TRANCOUNT > 0 )
ROLLBACK TRANSACTION;
EXEC dbo.usp_CatchError @RaisError = 1, @ExtraData = NULL,
@ErrorId = NULL;
END CATCH;
END;
//----------------------
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_Car_Update]
@RunDate BIGINT,
@CarNo NVARCHAR(50),
@Volume INT,
@Weight SMALLINT,
@CarName NVARCHAR(50),
@InUse BIT,
@CarID TINYINT,
@UserID INT = NULL
AS
BEGIN
BEGIN TRY
BEGIN TRANSACTION;
IF @UserID IS NULL
SET @UserID = dbo.fn_GetUserID();
RAISERROR('امکان ويرايش خودرو وجود ندارد', 18, 1)
INSERT INTO dbo.Car
(
CarID,
CarNo,
Volume,
WEIGHT,
CarName,
InUse,
UserID,
StartDate
)
SELECT @CarID,
@CarNo,
@Volume,
@Weight,
@CarName,
@InUse,
@UserID,
@RunDate
FROM (
UPDATE
dbo.Car
SET
EndDate = @RunDate
OUTPUT
INSERTED.*
FROM
(
SELECT StartDate
FROM udft_Car(@RunDate) uc
WHERE uc.CarID = @CarID
) ucc
WHERE
dbo.Car.CarID = @CarID
AND dbo.Car.StartDate = ucc.StartDate
) UpC;
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
IF (@@TRANCOUNT > 0)
ROLLBACK TRANSACTION;
EXEC dbo.usp_CatchError @RaisError = 1,
@ExtraData = NULL,
@ErrorId = NULL;
END CATCH;
END;
//----------------
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[sp_Car_Delete]
@CarID TINYINT ,
@RunDate BIGINT ,
@UserID INT = NULL
AS
BEGIN
IF @UserID IS NULL
SET @UserID = dbo.fn_GetUserID();
IF EXISTS ( SELECT 1
FROM dbo.Distribute
WHERE CarID = @CarID )
RAISERROR(
'براي اين خودرو ، مسير پخش تعريف شده است.ابتدا مسير پخش را حذف نمائيد',
18,
1
);
UPDATE dbo.Car
SET EraserUserID = @UserID ,
EndDate = @RunDate
WHERE Car.EndDate = dbo.fn_GetMaxDateTime()
AND dbo.Car.CarID = @CarID;
END;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment