小编dev*_*Bem的帖子

检查表[pl/sql block]中是否存在行的正确方法

昨天我正在编写一些任务,让我感到震惊的是,当我使用pl/sql时,我并不知道检查表中是否存在行的正确和接受方式.

例如,让我们使用表格

PERSON(ID, Name); 
Run Code Online (Sandbox Code Playgroud)

显然我做不到(除非有一些秘密方法)类似于:

BEGIN 
  IF EXISTS SELECT id FROM person WHERE ID = 10; 
    -- do things when exists
  ELSE
    -- do things when doesn't exist
  END IF;
END;
Run Code Online (Sandbox Code Playgroud)

所以我解决它的标准方法是:

DECLARE
  tmp NUMBER;
BEGIN 
  SELECT id INTO tmp FROM person WHERE id = 10; 
  --do things when record exists
EXCEPTION
  WHEN no_data_found THEN
  --do things when record doesn't exist
END; 
Run Code Online (Sandbox Code Playgroud)

但是我不知道它是否被接受的方式,或者如果有更好的检查方法,如果有人可以与我分享他们的智慧,我真的会感到高兴:)

干杯.

sql oracle select plsql

39
推荐指数
3
解决办法
10万
查看次数

创建在插入时引发异常的触发器

各位程序员大家好,祝大家新年快乐!

我寒假的大学任务很少,其中之一是在桌子上创建触发器:

PERSON(ID, Name, Surname, Age);
Run Code Online (Sandbox Code Playgroud)

触发器应该在用户插入带有无效 ID 的行时通知用户。Vadility 标准是 ID 的长度为 11 位。

我试着写这样的解决方案:

CREATE OR REPLACE TRIGGER person_id_trigg
AFTER INSERT
ON person
DECLARE
  idNew VARCHAR(50);
  lengthException EXCEPTION;
BEGIN
  SELECT id INTO idNew FROM INSERTED;
  IF LENGTH(idNew) <> 11 THEN
  RAISE lengthException;
  END IF;
  EXCEPTION
  WHEN lengthException THEN
  dbms_output.put_line('ID for new person is INVALID. It must be 11 digits long!'); 
END;
Run Code Online (Sandbox Code Playgroud)

然后我意识到 INSERTED 只存在于 sqlserver 中,而不存在于 oracle 中。

你建议我能做些什么来解决这个问题?

提前致谢!

sql oracle triggers plsql

3
推荐指数
1
解决办法
3万
查看次数

检测页面上的滚动方向-更新上一个值

我正在使用React,我需要获取滚动方向才能做一些事情。我有一个有效的代码,但对如何存储和更新以前的滚动位置一无所知。

这是我的代码:

componentDidMount(){
    const prev = window.scrollY;
    window.addEventListener('scroll', e => this.handleNavigation(e, prev);
}
Run Code Online (Sandbox Code Playgroud)

这里的可见问题是componentDidMount 仅触发一次,因此当我尝试执行以下操作时:

handleNavigation = (e, prev) =>{
    const window = e.currentTarget;

    if(prev > window.scrollY){
        console.log("scrolling up");
    }
    else if(prev < window.scrollY){
        console.log("scrolling down");
    }
};
Run Code Online (Sandbox Code Playgroud)

它可以正确地比较值,但prev永远都不会改变,因此无法按预期工作。我该如何运作?

我是否将prev放在时间间隔内以更新值或类似的东西?

javascript scroll ecmascript-6 reactjs

1
推荐指数
1
解决办法
1688
查看次数

标签 统计

oracle ×2

plsql ×2

sql ×2

ecmascript-6 ×1

javascript ×1

reactjs ×1

scroll ×1

select ×1

triggers ×1