Oracle 저장 프로 시저에서 "AS"와 "IS"의 차이점은 무엇입니까?


95

때때로 "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.


1
두 번째는 항상 기능을 실제로 구현하는 다른 절차를 가리키는 것이 아닙니까?
— Joel Coehoorn

1
내 테스트에서 둘 다 똑같은 몸으로 작동하는 것처럼 보였습니다. 다른 proc을 가리키는 것에 대해 Dunno.
— Ishmaeel

답변:


66

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

기능 f IS ...

보기 만들기 v 선택으로 ...


54

한 가지 사소한 차이 ...

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

이것은 작동합니다 ...

cursor test_cursor
is
select * from emp;

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

cursor test_cursor
as
select * from emp;

4
의 어플리케이션 개발자 크리슈나 무르의 답변이 완료
— 이마 드

21

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


11

여기에 또 다른 차이점이 있습니다 (어쨌든 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"기호가 발생했습니다. 개체 불투명


1

TutorialsPoint 에 따르면

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

이전 답변을 고려하면

나는 추측한다

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

과

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

.


1

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.