?? 2.sql
字號:
/*輸出參數*/
IF @nCount > 0
SELECT @bitResult = 1
ELSE
SELECT @bitResult = 0
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*添加一條商品信息,輸出商品編號和執行結果*/
CREATE PROC dbo.GoodsAddNew
(
@GoodsName varchar(100), --商品名稱
@Amount decimal(18, 2), --庫存數量
@TypeID int, --類型編號
@UnitName varchar(100), --單位
@SupplierID int, --供貨商編號
@Introduce varchar(1000), --商品介紹
@Remark varchar(1000), --備注
@ID int OUTPUT, --商品編號
@ReturnValue int OUTPUT --執行結果(VB組件的自定義枚舉值)
)
AS
DECLARE @ErrNo int --保存錯誤號
BEGIN TRANSACTION --開始事務
/*
手動維護數據唯一性的代碼。如果沒有創建唯一約束,請取消這段代碼的注釋
驗證是否存在當前商品名稱,若是則不能添加
DECLARE @ExistName bit
EXEC ExistByName 'Goods', 'GoodsName', @GoodsName, @ExistName OUTPUT
IF @ExistName = 1 --當前商品名稱已存在
BEGIN
ROLLBACK TRANSACTION --回滾事務
SELECT @ReturnValue = 3 --返回VB組件的自定義枚舉值
RETURN --結束存儲過程
END
*/
/*添加記錄*/
INSERT INTO Goods Values(@GoodsName, @Amount, @UnitName, @TypeID, @SupplierID, @Introduce, @Remark)
--記錄當前的錯誤號
SELECT @ErrNo = @@ERROR
/*輸出參數*/
IF @ErrNo = 0 --沒有發生錯誤
BEGIN
SELECT @ID = (SELECT MAX(GoodsID) FROM Goods)
SELECT @ReturnValue = 0
END
ELSE IF @ErrNo = 2627 --違反唯一約束
BEGIN
ROLLBACK TRANSACTION --遇到錯誤則回滾事務
SELECT @ReturnValue = 3
RETURN
END
ELSE --其他未知錯誤
BEGIN
ROLLBACK TRANSACTION --遇到錯誤則回滾事務
SELECT @ReturnValue = 1
RETURN
END
COMMIT TRANSACTION --提交事務
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*刪除一條商品信息,輸出執行結果*/
CREATE PROC dbo.GoodsDelete
(
@GoodsID int, --商品編號
@ReturnValue int OUTPUT --執行結果(VB組件的自定義枚舉值)
)
AS
DECLARE @ErrNo int --保存錯誤號
BEGIN TRANSACTION --開始事務
/*驗證是否存在當前商品編號,若否則不能刪除*/
DECLARE @ExistID bit
EXEC ExistByID 'Goods', 'GoodsID', @GoodsID, @ExistID OUTPUT
IF @ExistID = 0 --當前商品編號不存在
BEGIN
ROLLBACK TRANSACTION --回滾事務
SELECT @ReturnValue = 2 --返回VB組件的自定義枚舉值
RETURN --結束存儲過程
END
/*
手動維護數據完整性的代碼。如果沒有創建外鍵約束,請取消這段代碼的注釋
驗證進貨信息是否包含當前商品,若是則不能刪除
EXEC ExistByID 'Buy', 'BuyID', @GoodsID, @ExistID OUTPUT
IF @ExistID = 1
BEGIN
ROLLBACK TRANSACTION
SELECT @ReturnValue = 3
RETURN
END
驗證銷售信息是否包含當前商品,若是則不能刪除
EXEC ExistByID 'Sale', 'SaleID', @GoodsID, @ExistID OUTPUT
IF @ExistID = 1
BEGIN
ROLLBACK TRANSACTION
SELECT @ReturnValue = 3
RETURN
END
*/
/*刪除記錄*/
DELETE FROM Goods WHERE GoodsID = @GoodsID
--記錄當前的錯誤號
SELECT @ErrNo = @@ERROR
/*輸出參數*/
IF @ErrNo = 0 --沒有發生錯誤
SELECT @ReturnValue = 0
ELSE IF @ErrNo = 547 --發生外鍵沖突
BEGIN
ROLLBACK TRANSACTION --遇到錯誤則回滾事務
SELECT @ReturnValue = 3
RETURN
END
ELSE --其他未知錯誤
BEGIN
ROLLBACK TRANSACTION --遇到錯誤則回滾事務
SELECT @ReturnValue = 1
RETURN
END
COMMIT TRANSACTION --提交事務
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*添加一條商品類型,輸出類型編號和操作結果*/
CREATE PROC dbo.GoodsTypeAddNew
(
@TypeName varchar(100), --類型名稱
@Remark varchar(1000), --備注
@ID int OUTPUT, --類型編號
@ReturnValue int OUTPUT --執行結果(VB組件的自定義枚舉值)
)
AS
DECLARE @ErrNo int --保存錯誤號
BEGIN TRANSACTION --開始事務
/*
手動維護數據唯一性的代碼。如果沒有創建唯一約束,請取消這段代碼的注釋
驗證是否存在當前類型名稱,若是則不能添加
DECLARE @ExistName bit
EXEC ExistByName 'GoodsType', 'TypeName', @TypeName, @ExistName OUTPUT
IF @ExistName = 1 --當前類型名稱已存在
BEGIN
ROLLBACK TRANSACTION --回滾事務
SELECT @ReturnValue = 3 --返回VB組件的自定義枚舉值
RETURN --結束存儲過程
END
*/
/*添加記錄*/
INSERT INTO GoodsType Values(@TypeName, @Remark)
--記錄當前的錯誤號
SELECT @ErrNo = @@ERROR
/*輸出參數*/
IF @ErrNo = 0 --沒有發生錯誤
BEGIN
SELECT @ID = (SELECT MAX(TypeID) FROM GoodsType)
SELECT @ReturnValue = 0
END
ELSE IF @ErrNo = 2627 --違反唯一約束
BEGIN
ROLLBACK TRANSACTION --遇到錯誤則回滾事務
SELECT @ReturnValue = 3
RETURN
END
ELSE --其他未知錯誤
BEGIN
ROLLBACK TRANSACTION --遇到錯誤則回滾事務
SELECT @ReturnValue = 1
RETURN
END
COMMIT TRANSACTION --提交事務
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*刪除一條商品類型,輸出執行結果*/
CREATE PROC dbo.GoodsTypeDelete
(
@TypeID int, --類型編號
@ReturnValue int OUTPUT --執行結果(VB組件的自定義枚舉值)
)
AS
DECLARE @ErrNo int --保存錯誤號
BEGIN TRANSACTION --開始事務
/*驗證是否存在當前類型編號,若否則不能刪除*/
DECLARE @ExistID bit
EXEC ExistByID 'GoodsType', 'TypeID', @TypeID, @ExistID OUTPUT
IF @ExistID = 0 --當前類型編號不存在
BEGIN
ROLLBACK TRANSACTION --回滾事務
SELECT @ReturnValue = 2 --返回VB組件的自定義枚舉值
RETURN
END
/*
手動維護數據完整性的代碼。如果沒有創建外鍵約束,請取消這段代碼的注釋
驗證商品記錄是否引用了該類型,若是則不能刪除
EXEC ExistByID 'Goods', 'TypeID', @TypeID, @ExistID OUTPUT
IF @ExistID = 1
BEGIN
ROLLBACK TRANSACTION
SELECT @ReturnValue = 3
RETURN
END
*/
/*刪除記錄*/
DELETE FROM GoodsType WHERE TypeID = @TypeID
--記錄當前的錯誤號
SELECT @ErrNo = @@ERROR
/*輸出參數*/
IF @ErrNo = 0 --沒有發生錯誤
SELECT @ReturnValue = 0
ELSE IF @ErrNo = 547 --發生外鍵沖突
BEGIN
ROLLBACK TRANSACTION --遇到錯誤則回滾事務
SELECT @ReturnValue = 3
RETURN
END
ELSE --其他未知錯誤
BEGIN
ROLLBACK TRANSACTION --遇到錯誤則回滾事務
SELECT @ReturnValue = 1
RETURN
END
COMMIT TRANSACTION --提交事務
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*更新一條商品類型,輸出執行結果*/
CREATE PROC dbo.GoodsTypeUpdate
(
@TypeID int, --類型編號
@TypeName varchar(100), --類型名稱
@Remark varchar(1000), --備注
@ReturnValue int OUTPUT --執行結果(VB組件的自定義枚舉值)
)
AS
DECLARE @ErrNo int --保存錯誤號
BEGIN TRANSACTION --開始事務
/*驗證是否存在當前類型編號,若否則不能更新*/
DECLARE @ExistID bit
EXEC ExistByID 'GoodsType', 'TypeID', @TypeID, @ExistID OUTPUT
IF @ExistID = 0 --當前類型編號不存在
BEGIN
ROLLBACK TRANSACTION --回滾事務
SELECT @ReturnValue = 2 --返回VB組件的自定義枚舉值
RETURN --結束存儲過程
END
/*
手動維護數據唯一性的代碼。如果沒有創建唯一約束,請取消這段代碼的注釋
驗證是否與其他記錄的類型名稱相同,若是則不能更新
DECLARE @ExistName bit
EXEC ExistNameWithoutID 'GoodsType', 'TypeID', @TypeID, 'TypeName', @TypeName, @ExistName OUTPUT
IF @ExistName = 1
BEGIN
ROLLBACK TRANSACTION
SELECT @ReturnValue = 3
RETURN
END
*/
/*更新記錄*/
UPDATE GoodsType SET TypeName = @TypeName, Remark = @Remark WHERE TypeID = @TypeID
--記錄當前的錯誤號
SELECT @ErrNo = @@ERROR
/*輸出參數*/
IF @ErrNo = 0 --沒有發生錯誤
SELECT @ReturnValue = 0
ELSE IF @ErrNo = 2627 --違反唯一約束
BEGIN
ROLLBACK TRANSACTION --遇到錯誤則回滾事務
SELECT @ReturnValue = 3
RETURN
END
ELSE --其他未知錯誤
BEGIN
ROLLBACK TRANSACTION --遇到錯誤則回滾事務
SELECT @ReturnValue = 1
RETURN
END
COMMIT TRANSACTION --提交事務
GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
/*更新一條商品信息,輸出執行結果*/
CREATE PROC dbo.GoodsUpdate
(
@GoodsID int, --商品編號
@GoodsName varchar(100), --商品名稱
@Amount decimal(18, 2), --庫存數量
@TypeID int, --類型編號
@UnitName varchar(100), --單位
@SupplierID int, --供貨商編號
@Introduce varchar(1000), --商品介紹
@Remark varchar(1000), --備注
@ReturnValue int OUTPUT --執行結果(VB組件的自定義枚舉值)
)
AS
DECLARE @ErrNo int --保存錯誤號
BEGIN TRANSACTION --開始事務
/*驗證是否存在當前商品編號,若否則不能更新*/
DECLARE @ExistID bit
EXEC ExistByID 'Goods', 'GoodsID', @GoodsID, @ExistID OUTPUT
IF @ExistID = 0 --當前商品編號不存在
BEGIN
ROLLBACK TRANSACTION --回滾事務
SELECT @ReturnValue = 2 --返回VB組件的自定義枚舉值
RETURN --結束存儲過程
END
/*
手動維護數據唯一性的代碼。如果沒有創建唯一約束,請取消這段代碼的注釋
驗證是否與其他記錄的商品名稱相同,若是則不能更新
DECLARE @ExistName bit
EXEC ExistNameWithoutID 'Goods', 'GoodsID', @GoodsID, 'GoodsName', @GoodsName, @ExistName OUTPUT
IF @ExistName = 1 --與其他記錄的商品名稱相同
BEGIN
ROLLBACK TRANSACTION --回滾事務
SELECT @ReturnValue = 3 --返回VB組件的自定義枚舉值
RETURN --結束存儲過程
END
*/
/*更新記錄*/
UPDATE Goods SET GoodsName = @GoodsName, Amount = @Amount, TypeID = @TypeID, UnitName = @UnitName, SupplierID = @SupplierID, Introduce = @Introduce, Remark = @Remark WHERE GoodsID = @GoodsID
--記錄當前的錯誤號
SELECT @ErrNo = @@ERROR
/*輸出參數*/
IF @ErrNo = 0 --沒有發生錯誤
SELECT @ReturnValue = 0
ELSE IF @ErrNo = 2627 --違反唯一約束
BEGIN
ROLLBACK TRANSACTION --遇到錯誤則回滾事務
SELECT @ReturnValue = 3
RETURN
END
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -