使用if / else的过程

时间:2018-03-11 23:05:01

标签: stored-procedures plsql oracle-apex

我需要创建一个过程,该过程接受一个大于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:编译错误成功 /

3 个答案:

答案 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 '