Oracle 데이터베이스의 저장 프로시저는 무엇입니까?

青灯夜游
풀어 주다: 2020-08-22 15:19:54
원래의
5121명이 탐색했습니다.

Oracle 데이터베이스 저장 프로시저: 특정 기능을 완료하기 위한 SQL 문 집합으로, 컴파일되어 데이터베이스에 저장됩니다. 저장 프로시저는 흐름 제어 및 SQL 문으로 작성된 프로시저로, 이 프로시저를 컴파일하고 최적화하여 데이터베이스 서버에 저장하면 응용 프로그램에서 사용할 때만 호출됩니다.

Oracle 데이터베이스의 저장 프로시저는 무엇입니까?

저장 프로시저(Stored Procedure)는 특정 기능을 완료하기 위한 SQL 문 집합으로, 컴파일되어 데이터베이스에 저장됩니다. 사용자는 이름을 지정하고 매개변수(저장 프로시저에 매개변수가 있는 경우)를 제공하여 저장 프로시저를 실행합니다. 저장 프로시저는 데이터베이스의 중요한 개체이므로 잘 설계된 데이터베이스 응용 프로그램에서는 저장 프로시저를 사용해야 합니다.

저장 프로시저는 흐름 제어 및 SQL 문으로 작성된 프로세스입니다. 이 프로세스는 컴파일되고 최적화되어 애플리케이션에서 사용할 때만 호출하면 됩니다. ORACLE에서는 여러 관련 프로시저를 결합하여 프로그램 패키지를 구성할 수 있습니다.

장점:

1. 저장 프로시저가 생성될 때만 컴파일됩니다. 일반적으로 SQL 문은 실행될 때마다 한 번씩 컴파일되므로 다음을 사용합니다. 저장 프로시저는 데이터베이스의 실행 속도를 향상시킬 수 있습니다.

2. 데이터베이스에서 복잡한 작업(예: 여러 테이블에 대한 업데이트, 삽입, 쿼리 및 삭제)을 수행할 때 이 복잡한 작업은 저장 프로시저에 캡슐화되어 데이터베이스에서 제공하는 트랜잭션 처리와 함께 사용될 수 있습니다.

3. 저장 프로시저를 재사용할 수 있어 데이터베이스 개발자의 작업량을 줄일 수 있습니다.

4. 높은 보안으로 특정 사용자만 지정된 저장 프로세스를 사용할 수 있는 권한을 갖도록 설정할 수 있습니다.

간단히 말해서 컴퓨터에 저장 프로시저를 작성합니다. 이 저장 프로시저는 해당 테이블의 데이터와 마찬가지로 원격 데이터베이스 서버에 배치되지만 실행 가능한 코드이며 서버 사용자에게 연결될 수 있습니다. 당신이 작성한 저장 프로시저를 호출할 수 있습니다

그 기능은 세부 사항을 숨기는 것입니다. 즉, 당신이 작성한 저장 프로시저 코드는 복잡할 수 있지만 다른 사람들이 구체적으로 어떻게 수행되는지 알지 못해도 호출하는 것은 매우 간단합니다. , 한 번에 여러 명령을 완료할 수 있습니다.

기본 구문

CREATE [OR REPLACE] PROCEDURE 存储过程名[(参数[IN|OUT|IN OUT] 数据类型...)] 
{AS|IS} 
[说明部分] 
BEGIN 
可执行部分 
[EXCEPTION 
错误处理部分] 
END [过程名];
로그인 후 복사

1. 선택적 키워드 OR REPLACE는 저장 프로시저가 이미 존재하는 경우 새 저장 프로시저(일반적으로 재구성)로 덮어쓰게 됨을 의미합니다. 사용자 저장 프로시저.

2. 매개변수 부분은 여러 매개변수를 정의하는 데 사용됩니다(매개변수가 없으면 생략 가능). 매개변수는 IN, OUT, IN OUT의 세 가지 형태로 제공됩니다. 매개변수 형식을 지정하지 않으면 기본값은 IN입니다.

3. 키워드 AS는 IS로 작성될 수도 있으며 그 뒤에 프로세스의 지역 변수를 정의할 수 있는 프로세스 설명 부분이 옵니다.

4. 저장 프로시저를 작성하려면 텍스트 편집기를 사용하거나 SQLPLus 환경에서 직접 사용할 수 있습니다. 컴파일된 코드를 생성하려면 작성된 저장 프로시저를 컴파일 프로세스 중에 컴파일해야 합니다. . 데이터베이스에 저장합니다. 성공적으로 컴파일된 저장 프로시저는 Oracle 환경에서 호출될 수 있습니다.

5. 더 이상 필요하지 않은 저장 프로시저를 삭제할 수 있습니다. 저장 프로시저를 삭제하는 사람은 해당 프로시저를 만든 사람이거나 DROP ANY PROCEDURE 시스템 권한을 가진 사람입니다. 저장 프로시저를 삭제하는 구문은 다음과 같습니다.

DROP PROCEDURE 存储过程名;
로그인 후 복사

6. 저장 프로시저를 다시 컴파일하려면 프로시저 생성자이거나 ALTER ANY PROCEDURE 시스템 권한이 있는 사람만 가능합니다. 구문은 다음과 같습니다.

ALTER PROCEDURE 存储过程名 COMPILE;
로그인 후 복사

7 저장 프로시저를 실행(또는 호출)하는 사람은 해당 프로세스의 작성자이거나 EXECUTE ANY PROCEDURE 시스템 권한을 가진 사람 또는 EXECUTE 권한을 부여받은 사람입니다. 주인. 실행 방법은 다음과 같습니다.

방법 1:

EXECUTE 模式名.存储过程名[(参数...)];
로그인 후 복사

방법 2:

BEGIN 
模式名.存储过程名[(参数...)]; 
END;
로그인 후 복사

8. 전달된 매개변수는 정의된 매개변수 유형, 번호 및 순서와 일치해야 합니다(매개변수가 기본값을 정의하는 경우 매개변수는 )를 호출할 때는 생략됩니다. 매개변수는 변수, 상수 또는 표현식일 수 있습니다.

9. as와 is의 차이점: 둘 다 저장 프로시저(프로시저)와 함수(함수)에서 사용할 수 있지만 IS를 사용하면 뷰에서 저장 함수를 디버깅하는 데 디버그 모드를 사용할 수 없습니다. AS는 사용할 수 없으며, 커서(CURSOR)에서는 IS만 사용할 수 있고 AS는 사용할 수 없습니다.

10. Oracle의 Decode 함수

의미 설명:

decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
로그인 후 복사

이 함수의 의미는 다음과 같습니다.

IF 条件=值1 THEN
    RETURN(翻译值1)
ELSIF 条件=值2 THEN
    RETURN(翻译值2)
    ......
ELSIF 条件=值n THEN
    RETURN(翻译值n)
ELSE
    RETURN(缺省值)
END IF
로그인 후 복사
decode(字段或字段的运算,值1,值2,值3)
로그인 후 복사

이 함수의 결과는 필드 또는 필드 연산의 값이 값과 같을 때입니다. 1이면 함수는 값 2를 반환하고, 그렇지 않으면 값 3을 반환합니다.

물론 값 1, 값 2, 값 3도 표현식이 될 수 있습니다. 이 함수는 특정 SQL 문을 훨씬 간단하게 만듭니다

예:

select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值
로그인 후 복사

sign() 함수 특정 값이 0, 양수 또는 음수이면 각각 0, 1, -1을 반환합니다.

예:

변수 1=10, 변수 2=20

then sign(변수 1-변수 2)은 -를 반환합니다. 1이고 디코드 디코딩 결과는 "변수 1"이며 더 작은 값을 취하려는 목적을 달성합니다.

11.nvl 함수

NVL 함수의 형식은 다음과 같습니다. NVL(expr1,expr2)

의미는 oracle의 첫 번째 매개변수가 비어 있으면 두 번째 매개변수의 값이 표시된다는 것입니다. 첫 번째 매개변수가 비어 있지 않으면 첫 번째 매개변수의 원래 값을 표시합니다.

NVL2函数的格式如下:NVL2(expr1,expr2, expr3)

含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。

NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。

Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。

格式如下:

Coalesce(expr1, expr2, expr3….. exprn)
로그인 후 복사

表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。

返回表达式中第一个非空表达式,如有以下语句:   

SELECT COALESCE(NULL,NULL,3,4,5) FROM dual
로그인 후 복사

其返回结果为:3

如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值

12、max函数

对字符型数据的最大值,是按照首字母由A~Z的顺序排列,越往后,其值越大。当然,对于汉字则是按照其全拼拼音排列的,若首字符相同,则比较下一个字符,以此类推。

13、随机抽取N条记录

https://blog.csdn.net/bbliutao/article/details/7727322

14、untion all

union all,解释为联合所有。

Union解释为联合。union或者Union all实现把前后两个select集合的数据联合起来,组成一个结果集查询输出。这就要求联合前后的结果集,需要分别有相同的输出字段的数目,并且对应的字段类型要相同。
SELECT column1, column2 from table1 union (all) select column1, column2 from table2

以上语句要求量表的column1字段类型相同,column2类型相同。而且每个查询的数目都是一样的。UNION ALL和UNION的差别就在ALL上面,第一个叫联合所有,说明会显示前后两个查询所有的数据,而UNION没有ALL(所有)这个单词,实现将前后两个查询的数据联合到一起后,去掉重复的数据显示

推荐教程:《Oracle教程

위 내용은 Oracle 데이터베이스의 저장 프로시저는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿