programing

plsql에서 변수가 null인지 확인합니다.

starjava 2023. 2. 21. 23:19
반응형

plsql에서 변수가 null인지 확인합니다.

변수가 null인지 확인하고 싶습니다.null일 경우 해당 변수에 값을 설정합니다.

//data type of var is  number 
if Var = null then
  var :=5;
endif

하지만 오류가 발생하고 있습니다.변수가 늘인지 확인하려면 어떻게 해야 합니까?

Oracle 데이터 유형을 사용하고 있습니다.

if var is NULL then
  var :=5;
end if;

용도:

IF Var IS NULL THEN
  var := 5;
END IF;

Oracle 9i+:

var = COALESCE(Var, 5)

기타 대안:

var = NVL(var, 5)

레퍼런스:

PL/SQL에서 '=' 또는 '<>'와 같은 연산자를 사용하여 다음을 테스트할 수 없습니다.NULL와 비교해서NULL돌아가다NULL비교하다NULL특수 연산자를 사용해야 합니다.IS NULL또는IS NOT NULL바로 이런 목적을 위해 존재하는 거죠그래서 쓰는 대신

IF var = NULL THEN...

너는 써야 한다

IF VAR IS NULL THEN...

이미 제공하신 경우 다음 옵션을 사용할 수도 있습니다.NVL내장 기능. NVL는 두 개의 인수를 사용합니다.첫 번째 인수는 변수이고 두 번째 인수는 값(계산 또는 계산)입니다. NVL첫 번째 인수를 조사하여 첫 번째 인수가 다음과 같은 것을 알게 됩니다.NULL는 두 번째 인수를 반환합니다.에 대한 첫 번째 인수가NVL아니다NULL첫 번째 인수가 반환됩니다.다시 쓸 수 있게

IF var IS NULL THEN
  var := 5;
END IF;

~하듯이

var := NVL(var, 5);

이게 도움이 됐으면 좋겠어요.

편집

그리고 제가 이 답을 쓴 지 10년이 다 되어가니까 조금 더 확대해서 축하합시다.

COALESCE함수는 Oracle의 ANSI와 동등합니다.NVL와는 다르다.NVL몇 가지 IMO의 좋은 방법:

  1. 임의의 수의 인수를 사용하여 NULL이 아닌 첫 번째 인수를 반환합니다.모든 인수가 에 전달된 경우COALESCENULL, NULL을 반환합니다.

  2. 와는 대조적으로NVL,COALESCE필요한 경우에만 인수를 평가합니다.NVL는 양쪽 인수를 평가하여 첫 번째 인수가 NULL인지 여부를 판단합니다.그렇게COALESCE더 효율적일 수 있다, 왜냐하면 그것은 사용되지 않을 것(그리고 잠재적으로 원하지 않는 부작용을 일으킬 수 있다)을 평가하는 데 시간을 소비하지 않기 때문이다, 하지만 그것은 또한 다음을 의미한다.COALESCE를 100% 쉽게 대체할 수 있는 것은 아닙니다.NVL.

IS NULL 사용

참조 페이지

NVL 기능도 있습니다.

http://www.techonthenet.com/oracle/functions/nvl.php

var가 null인 경우 사용

pl/sql 조건부 구에서는 늘을 주의해 주세요.늘은 어떤 것과도 같거나 작거나 같거나 같지 않기 때문입니다.그것들을 피하는 가장 좋은 방법은 nvl을 사용하는 것입니다.

예를들면

declare
  i integer;
begin
  if i <> 1 then
    i:=1;
    foobar();
  end if;
end;
/

if 절에는 들어가지 않습니다.

이거면 될 거야.

if 1<>nvl(i,1) then
if i<> 1 or i is null then

다른 방법:

var := coalesce (var, 5);

COALESCE는 Oracle의 NVL 함수와 ANSI 등가(약간)입니다.

언급URL : https://stackoverflow.com/questions/1984141/check-if-a-variable-is-null-in-plsql

반응형