Oracle 데이터베이스에서 저장 프로시저는 특정 입력 조건에 따라 실행될 수 있는 미리 정의된 SQL 문 및 프로그램 논리 집합입니다. 저장 프로시저는 비즈니스 요구 사항에 따라 작성된 다음 데이터베이스에 저장할 수 있습니다. 저장 프로시저는 일괄 데이터 처리, 로깅, 자동화 프로세스 등 다양한 비즈니스 시나리오에 유용합니다. 이 문서에서는 Oracle 저장 프로시저에서 SQL 문을 작성하고 실행하는 방법을 주로 설명합니다.
저장 프로시저를 생성하려면 CREATE PROCEDURE 문을 사용해야 합니다. 구체적인 구문은 다음과 같습니다.
CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] type [, ...])] IS [local_variable_declarations;] BEGIN executable_statements [EXCEPTION exception_handler [exception_handler, ...]] END [procedure_name];
여기서 procedure_name
은 이름입니다. 저장 프로시저에서 parameter_name
은 입력, 출력 또는 입출력 매개변수의 이름이고, type
은 매개변수의 데이터 유형이며, local_variable_declarations
는 지역 변수의 선언문이고, executable_statements
는 저장 프로시저의 주요 부분이며, Exception_handler
는 예외 처리기입니다. 저장 프로시저 내에서 SQL 문을 사용하여 데이터베이스 작업을 수행할 수 있습니다. procedure_name
是存储过程的名称,parameter_name
是输入、输出或输入输出参数的名称,type
是参数的数据类型,local_variable_declarations
是局部变量的声明语句,executable_statements
是存储过程的主体部分,exception_handler
是异常处理程序。在存储过程内部,可以使用 SQL 语句执行数据库操作。
下面是一个简单的存储过程的示例,用于在 employee
表中插入新记录:
CREATE OR REPLACE PROCEDURE add_employee (employee_id IN NUMBER, name IN VARCHAR2, salary IN NUMBER) IS BEGIN INSERT INTO employee (employee_id, name, salary) VALUES (employee_id, name, salary); COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE; END add_employee;
这个存储过程有 3 个输入参数,分别是 employee_id
、name
、salary
。在存储过程主体内,使用 INSERT INTO 语句将输入值插入到 employee
表中。最后,使用 COMMIT 语句提交更改。如果插入操作失败,则使用 ROLLBACK 语句回滚到事务开始时的状态,并使用 RAISE 语句重新抛出异常。
要调用存储过程,可以使用 CALL 语句,具体语法如下:
CALL procedure_name;
在调用存储过程时,可以传递输入参数,以下是一个例子:
CALL add_employee(123, 'John', 5000);
这将调用 add_employee
存储过程,将值 123、'John' 和 5000 传递给输入参数 employee_id
、name
和 salary
。执行结果将是将新记录插入到 employee
表中。
在存储过程内部,可以使用 SQL 语句执行各种操作。下面是一些常见的 SQL 语句示例:
SELECT 语句用于从表中检索记录。以下是 SELECT 语句的语法:
SELECT column1, column2, ... FROM table_name [WHERE condition];
其中,column1, column2, ...
是要检索的列名,table_name
是要检索的表名,[WHERE condition]
是可选择的检索条件。例如,以下 SELECT 语句用于检索 employee
表中的所有记录:
SELECT * FROM employee;
INSERT INTO 语句用于将新记录插入到表中。以下是 INSERT INTO 语句的语法:
INSERT INTO table_name (column1, column2, ...) VALUES (value1, value2, ...);
其中,table_name
是要插入记录的表的名称,column1, column2, ...
是要插入数据的列,value1, value2, ...
是要插入的值。例如,以下 INSERT INTO 语句用于将新记录插入到 employee
表中。
INSERT INTO employee (employee_id, name, salary) VALUES (123, 'John', 5000);
UPDATE 语句用于更新表中的记录。以下是 UPDATE 语句的语法:
UPDATE table_name SET column1 = value1, column2 = value2, ... [WHERE condition];
其中,table_name
是要更新的表名,column1 = value1, column2 = value2, ...
是要更新的列和对应的值,WHERE condition
是可选的更新条件。例如,以下 UPDATE 语句用于将 employee
表中 name
为 'John' 的记录的 salary
值更新为 6000:
UPDATE employee SET salary = 6000 WHERE name = 'John';
DELETE 语句用于删除表中的记录。以下是 DELETE 语句的语法:
DELETE FROM table_name [WHERE condition];
其中,table_name
是要删除记录的表的名称,WHERE condition
是可选的删除条件。例如,以下 DELETE 语句用于删除 employee
表中 salary
employee
테이블에 새 레코드를 삽입하기 위한 간단한 저장 프로시저의 예입니다. DELETE FROM employee WHERE salary < 5000;이 저장 프로시저에는
employee_id
라는 3개의 입력 매개변수가 있습니다. 코드>, 이름
, 급여
. 저장 프로시저 본문 내에서 INSERT INTO 문을 사용하여 employee
테이블에 입력 값을 삽입합니다. 마지막으로 COMMIT 문을 사용하여 변경 사항을 커밋합니다. 삽입 작업이 실패하면 ROLLBACK 문을 사용하여 트랜잭션 시작 시 상태로 롤백하고 RAISE 문을 사용하여 예외를 다시 발생시킵니다. 🎜🎜저장 프로시저 호출🎜🎜저장 프로시저를 호출하려면 CALL 문을 사용할 수 있습니다. 구체적인 구문은 다음과 같습니다. 🎜rrreee🎜저장 프로시저를 호출할 때 입력 매개 변수를 전달할 수 있습니다. 다음은 예입니다. 🎜 rrreee🎜이것은 add_employee
저장 프로시저를 호출하여 123, 'John' 및 5000 값을 입력 매개변수 employee_id
, name
및 급여
. 결과는 employee
테이블에 새 레코드가 삽입되는 것입니다. 🎜🎜SQL 문 실행🎜🎜저장 프로시저 내에서 SQL 문을 사용하여 다양한 작업을 수행할 수 있습니다. 다음은 몇 가지 일반적인 SQL 문의 예입니다. 🎜🎜SELECT 문 🎜🎜 SELECT 문은 테이블에서 레코드를 검색하는 데 사용됩니다. SELECT 문의 구문은 다음과 같습니다. 🎜rrreee🎜 그 중 column1,column2,...
는 조회할 컬럼 이름, table_name
은 테이블 이름입니다. 검색하려면 [WHERE 조건]
은 선택적 검색 조건입니다. 예를 들어, 다음 SELECT 문은 employee
테이블의 모든 레코드를 검색하는 데 사용됩니다. 🎜rrreee🎜INSERT INTO 문🎜🎜INSERT INTO 문은 테이블에 새 레코드를 삽입하는 데 사용됩니다. INSERT INTO 문의 구문은 다음과 같습니다. 🎜rrreee🎜여기서, table_name
은 레코드가 삽입될 테이블의 이름이고, column1, column2, ...는 데이터가 삽입될 컬럼이고, <code>value1, value2, ...
는 삽입될 값입니다. 예를 들어, 다음 INSERT INTO 문은 employee
테이블에 새 레코드를 삽입합니다. 🎜rrreee🎜UPDATE 문🎜🎜UPDATE 문은 테이블의 레코드를 업데이트하는 데 사용됩니다. UPDATE 문의 구문은 다음과 같습니다. 🎜rrreee🎜여기서, table_name
은 업데이트할 테이블의 이름, column1 = value1, column2 = value2, ...
는 업데이트할 열이고 해당 값, WHERE 조건
은 선택적 업데이트 조건입니다. 예를 들어, 다음 UPDATE 문은 name
이 'John'인 employee
테이블에 있는 레코드의 salary
값을 6000으로 업데이트합니다. 🎜rrreee 🎜DELETE 문 🎜🎜DELETE 문은 테이블에서 레코드를 삭제하는 데 사용됩니다. DELETE 문의 구문은 다음과 같습니다. 🎜rrreee🎜 여기서, table_name
은 레코드를 삭제할 테이블 이름이고, WHERE 조건
은 선택적인 삭제 조건입니다. 예를 들어, 다음 DELETE 문은 salary
값이 5000보다 작은 employee
테이블의 모든 레코드를 삭제하는 데 사용됩니다. 🎜rrreee🎜Conclusion🎜🎜In Oracle 데이터베이스에서 저장된 프로시저는 특정 입력 조건에 따라 미리 정의된 SQL 문과 프로그램 논리를 실행하는 데 매우 유용한 도구입니다. 저장 프로시저를 작성하는 것은 복잡하고 어려운 작업이지만 사양에 따라 작성되는 한 저장 프로시저는 데이터베이스 개발 및 관리 작업을 크게 단순화할 수 있습니다. SQL 문을 실행하는 것은 저장 프로시저의 핵심 부분입니다. 이를 위해서는 다양한 SQL 문에 대한 숙련도와 이를 저장 프로시저에 포함시키는 방법에 대한 이해가 필요합니다. 🎜위 내용은 오라클 저장 프로시저 실행 SQL의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!