2014-05-02 4 views
0

У меня есть процедура, которая принимает 5 параметров, и ей нужно установить описание в пустую строку, установите дату, указанную в currentdate (я использую GETDATE). но то, что я, похоже, не может работать, - мне нужно, чтобы список и процент скидок были для того, чтобы бросать ошибки при попытке ввести отрицательное число. мой код работает, но мои высказывания не приходят с ошибками, когда я пытаюсь ввести отрицательное число.SQL не принимает отрицательные числа proc

USE MyGuitarShop; 
GO 
IF OBJECT_ID('spInsertProduct') IS NOT NULL 
DROP PROC spInsertProduct; 
GO 
CREATE PROC spInsertProduct 
@insCatID int = 0, 
@insProdCode varchar(10) = 0, 
@insProdName varchar(50) = 0, 
@insListPrice money = 0, 
@insDisPercent money = 0 

AS 
IF @insListPrice < 0 
PRINT 'this column does not accept negative numbers'; 
IF @insDisPercent < 0 
PRINT 'this column does not accept negative numbers'; 

UPDATE Products 
SET Description = '', DateAdded = GETDATE(); 
SELECT CategoryID, ProductCode, ProductName, ListPrice, DiscountPercent 
FROM Products 

USE MyGuitarShop; 
GO 

EXEC spInsertProduct 
-7,'254-652','Guitar', -300.01, 30.00; 

ответ

2

Вы можете использовать RAISERROR вместе с RETURN для обработки ошибок здесь. RAISERROR будет генерировать сообщение об ошибке, а оператор RETURN будет принудительно завершать, что-то вроде этого:

IF @insListPrice < 0 
BEGIN 
RAISERROR(N'List Price cannot be negative',16,1) 
RETURN 
END 
IF @insDisPercent < 0 
BEGIN 
RAISERROR(N'Discount percentage cannot be negative',16,1) 
RETURN 
END 
Смежные вопросы