我需要创建一个过程,该过程接受一个大于0且小于1的数字作为折扣金额。如果用户在我的参数之外放入一个数字,我还需要创建一个例外。
我创建了以下程序,但它没有编译,我不知道我哪里出错了。有什么想法吗?
CREATE OR REPLACE
PROCEDURE prod_disc
(p_disc IN DECIMAL)
IS
DECLARE
my_excep EXCEPTION;
BEGIN
UPDATE
xx_product
SET p_discount = (p_discount + p_disc)
WHERE p_qoh >= (p_min * 2);
IF p_disc > 0 OR p_disc < 1 THEN
RAISE my_excep;
END IF;
EXCEPTION
WHEN my_excep THEN
DBMS_OUTPUT.PUT_LINE('Error: Value must be greater than 0 and less than 1');
END;
/ 显示错误; ORA-24344:编译错误成功 /
答案 0 :(得分:1)
grep(groups[1], labs, val=TRUE, fixed=TRUE) #finds more elements than the ones I need
grep(paste(groups[1],"$",sep=""), labs, val=TRUE, fixed=TRUE) #does not work
grep(paste("\\b",groups[1],"\\b",sep=""), labs, val=TRUE, fixed=TRUE) #does not work
是盈余 - 将其删除。
此外,使用DECLARE
而不是DBMS_OUTPUT.PUT_LINE
,因为没有人会看到前者的结果(除非他在支持这种输出的工具中运行。后者将是看到无处不在。
已修复,您的代码可能如下所示(我没有检查其逻辑):
RAISE_APPLICATION_ERROR
答案 1 :(得分:0)
请删除;在EXCEPTION条款中
@IBOutlet weak var errorMessage: UILabel!
@IBOutlet weak var user_name: UITextField!
@IBOutlet weak var password: UITextField!
@IBAction func logIn(_ sender: Any, forEvent event: UIEvent) {
if user_name.text != "admin" {
errorMessage.text = "Incorrect username or password"
print(errorMessage)
}
答案 2 :(得分:0)
删除' DECLARE '关键字 您可以在' IS '关键字之后声明变量,因为它构建为过程/函数的声明部分而不放置关键字' DECLARE '