[oracle] Oracle 저장 프로 시저에서 “AS”와 “IS”의 차이점은 무엇입니까?

때때로 “AS”로 작성되고 “IS”키워드로 작성된 Oracle 프로 시저를 봅니다.

CREATE OR REPLACE Procedure TESTUSER.KILLINSTANCE (INSTANCEID integer) **AS**
...

CREATE OR REPLACE Procedure TESTUSER.KILLINSTANCE (INSTANCEID integer) **IS**
...

둘 사이에 차이점이 있습니까?


편집 : 분명히 둘 사이에는 기능적 차이가 없지만 일부 사람들은 SP가 패키지의 일부인 경우 “AS”를 사용하고 그렇지 않은 경우 “IS”를 사용하는 규칙을 따릅니다. 아니면 반대 방향으로. Meh.



답변

무슨 일이야. 코드를 더 쉽게 읽을 수 있도록 제공되는 동의어입니다.

기능 f IS …

보기 만들기 v 선택으로 …


답변

한 가지 사소한 차이 …

패키지 및 프로 시저의 동의어이지만 커서에는 해당되지 않습니다.

이것은 작동합니다 …

cursor test_cursor
is
select * from emp;

…하지만 그렇지 않습니다 :

cursor test_cursor
as
select * from emp;


답변

“IS”및 “AS”는 프로 시저 및 패키지를 작성하는 동안 동의어로 작동하지만 커서, 테이블 또는보기에 대해서는 작동하지 않습니다.


답변

여기에 또 다른 차이점이 있습니다 (어쨌든 10g에서)

느슨한 개체 유형이 주어지면 :

CREATE TYPE someRecordType AS OBJECT
(
   SomeCol VARCHAR2(12 BYTE)
);

당신은 만들 수 loose와이 오브젝트 유형의 테이블 유형 중 하나 AS또는IS

CREATE OR REPLACE TYPE someTableType
        IS {or AS} TABLE OF someRecordType;

그러나 패키지 내에서 이와 동일한 테이블 유형을 생성하는 경우 다음을 사용해야합니다 IS.

CREATE OR REPLACE PACKAGE SomePackage IS
    TYPE packageTableType IS TABLE OF someRecordType;
END SomePackage;

AS패키지에서를 사용 하면 다음 오류가 발생합니다.

오류 (2,30) : PLS-00103 : 다음 중 하나를 예상 할 때 “TABLE”기호가 발생했습니다. 개체 불투명


답변

TutorialsPoint 에 따르면

독립형 프로 시저를 작성하기 위해 IS 키워드 대신 AS 키워드가 사용됩니다.

이전 답변을 고려하면

나는 추측한다

AS 독립형 (블록, 서브 프로그램, 패키지 외부) 엔티티 용입니다.

IS 임베디드 (블록, 서브 프로그램 또는 패키지 내) 엔티티 용입니다.

.


답변

AS의 키워드가 대신 사용된다 IS 만드는 키워드 독립 기능 .

[ 독립 실행 형 저장 함수는 데이터베이스에 저장된 함수 ( 단일 값을 반환하는 하위 프로그램 )입니다. 참고 : CREATE FUNCTION 문을 사용하여 생성하는 독립 실행 형 저장 함수 는 PL / SQL 블록 또는 패키지에서 선언하고 정의하는 함수 와 다릅니다 . ]

자세한 설명 은 이것을 읽으십시오


답변