我看到Oracle程序有时用“AS”编写,有时用“IS”关键字编写。
CREATE OR REPLACE Procedure TESTUSER.KILLINSTANCE (INSTANCEID integer) **AS**
...
VS
CREATE OR REPLACE Procedure TESTUSER.KILLINSTANCE (INSTANCEID integer) **IS**
...
两者之间有什么区别吗?
<小时/> 编辑:显然,两者之间没有功能差异,但有些人遵循惯例,当SP是包的一部分时使用“AS”,而当它不是时,则使用“IS”。或者反过来说。 MEH。
答案 0 :(得分:57)
无论如何。它们是提供的同义词,使您的代码更具可读性:
功能f IS ...
按选择创建视图...
答案 1 :(得分:51)
一个小的差异......
它们是包和过程的同义词,但不是游标的同义词:
这有效......
cursor test_cursor
is
select * from emp;
......但这不是:
cursor test_cursor
as
select * from emp;
答案 2 :(得分:18)
“IS”和“AS”在创建过程和包时充当同义词,但不能用作游标,表或视图。
答案 3 :(得分: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:遇到符号&#34; TABLE&#34;当期待以下之一时:对象不透明
答案 4 :(得分:2)
使用AS关键字代替IS关键字来创建 独立程序。
并考虑以前的答案,
我想
AS
用于独立(在任何块,子程序,包之外)实体
和
IS
用于嵌入(在块,子程序或包中)实体。
。
答案 5 :(得分:2)
使用 AS 关键字代替 IS 关键字来创建独立功能。
[独立存储功能是存储在数据库中的功能(返回单个值的子程序)。 注意:使用CREATE FUNCTION语句创建的独立存储函数与在PL / SQL块或程序包中声明和定义的函数有不同。 ]
有关更多说明,请read this ...