programing

pls_integer와 binary_integer의 차이점은 무엇입니까?

lastcode 2023. 2. 26. 09:46
반응형

pls_integer와 binary_integer의 차이점은 무엇입니까?

추가 작업의 기반이 될 몇 가지 코드를 상속받았습니다.저장된 프로를 보니 연상 배열이 꽤 많네요

이 중 일부는 binary_integers에 의해 인덱싱되고 일부는 pls_integers에 의해 인덱싱됩니다.둘 사이에 어떤 차이점이 있나요?

문서를 봤는데, 이 줄 말고는:

PL/SQL 데이터 유형PLS_INTEGER그리고.BINARY_INTEGER동일합니다.간단하게 하기 위해 이 문서에서는 PLS_INTEGER를 사용하여PLS_INTEGER그리고.BINARY_INTEGER.

나는 그 둘의 차이를 찾을 수 없었다.그럼 뭐가 다른데?둘 다 이력/호환성 이유로 사용됩니까?

Oracle 10gR2 사용 중

역사적 이유.10g 이전에는 서로 달랐습니다.

8i 및 9i에서는 PLS_INTEGER가 BINARY보다 현저하게 빨랐습니다.정수


정수를 선언하고 조작하는 경우 Oracle은 다음과 같은 다양한 옵션을 제공합니다.

INTEGER - NUMBER의 하위 유형으로 정의된 이 데이터 유형은 완전히 플랫폼에 의존하지 않는 방식으로 구현됩니다. 즉, NUMBER 또는 INTEGER 변수를 사용하여 수행하는 모든 작업은 데이터베이스가 설치된 하드웨어에 관계없이 동일하게 작동합니다.

BINARY_INTEGER - STANDARD 패키지에서 INTEGER의 하위 유형으로 정의됩니다. 변수는 BINARY_로 선언됩니다.INTEGER는 -231+1 사이의 값을 할당할 수 있습니다.2-131, 일명 -2,196,483,647에서 2,196,483,647까지.Oracle9i Database Release 2, BINARY보다 이전 버전INTEGER는 다음과 같이 연관 배열(일명 인덱스 기준 테이블)에 허용되는 유일한 인덱스 데이터 유형이었습니다.

  TYPE my_array_t IS TABLE OF VARCHAR2(100) 
  INDEX BY BINARY_INTEGER

PLS_INTEGER - STANDARD 패키지에 BINARY_의 서브타입으로 정의되어 있습니다.INTEGER. PLS_INTEGER로 선언된 변수에는 -231+1 사이의 값을 할당할 수 있습니다.2-131, 일명 -2,196,483,647에서 2,196,483,647까지.PLS_INTEGER 연산은 기계 연산을 사용하기 때문에 일반적으로 NUMBER 및 INTEGER 연산보다 빠릅니다.또한 Oracle Database 10g 이전 버전에서는 BINARY보다 빠릅니다.정수단, Oracle Database 10g에서는 BINARY_INTEGER와 PLS_INTEGER는 현재 동일하며 서로 교환하여 사용할 수 있습니다.

binary_integer그리고.pls_integer둘 다 똑같아요.둘 다 -2,147,648,467 ~2,147,648,467 범위의 PL/SQL 데이터형입니다.

integer ★★★★★★★★★★★★★★★★★」binary_integer pls_integer배설 속도가 매우 빠릅니다. ★★★★★★★★★★★★★★★★★★pls_intger과 「기동」으로 합니다.binary_integer도관관산산산연연하하

pls_integer 10g에서 합니다.

binary_integer에서는 oracle9i보다 앞의 연관 배열의 정수를 인덱싱할 수 있습니다.

명확한 예:

SET TIMING ON

declare
  num   integer := 0;
  incr  integer := 1;
  limit integer := 100000000;
begin
  while num < limit loop
    num := num + incr;
  end loop;
end;
PL/SQL procedure successfully completed.

Elapsed: 00:00:20.23
ex:2
declare
  num   binary_integer := 0;
  incr  binary_integer := 1;
  limit binary_integer := 100000000;
begin
  while num < limit loop
    num := num + incr;
  end loop;
end;
/ 

PL/SQL procedure successfully completed.

Elapsed: 00:00:05.81
ex:3
declare
  num   pls_integer := 0;
  incr  pls_integer := 1;
  limit pls_integer := 100000000;
begin
  while num < limit loop
    num := num + incr;
  end loop;
end;
/ 

pls_integer와 binary_integer의 또 다른 차이점은 pls_integer와 관련된 계산이 오버플로우일 때 PL/SQL 엔진에 의해 런타임 예외가 발생한다는 것입니다.그러나 binary_integer를 포함하는 계산에서는 오버플로가 발생하더라도 예외가 발생하지 않습니다.

언급URL : https://stackoverflow.com/questions/7412731/whats-the-difference-between-pls-integer-and-binary-integer

반응형