>데이터 베이스 >Oracle >오라클 저장 프로시저 실행 SQL

오라클 저장 프로시저 실행 SQL

WBOY
WBOY원래의
2023-05-13 12:24:071224검색

Oracle 데이터베이스에서 저장 프로시저는 특정 입력 조건에 따라 실행될 수 있는 미리 정의된 SQL 문 및 프로그램 논리 집합입니다. 저장 프로시저는 비즈니스 요구 사항에 따라 작성된 다음 데이터베이스에 저장할 수 있습니다. 저장 프로시저는 일괄 데이터 처리, 로깅, 자동화 프로세스 등 다양한 비즈니스 시나리오에 유용합니다. 이 문서에서는 Oracle 저장 프로시저에서 SQL 문을 작성하고 실행하는 방법을 주로 설명합니다.

Oracle 저장 프로시저 작성

저장 프로시저 생성

저장 프로시저를 생성하려면 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_idnamesalary。在存储过程主体内,使用 INSERT INTO 语句将输入值插入到 employee 表中。最后,使用 COMMIT 语句提交更改。如果插入操作失败,则使用 ROLLBACK 语句回滚到事务开始时的状态,并使用 RAISE 语句重新抛出异常。

调用存储过程

要调用存储过程,可以使用 CALL 语句,具体语法如下:

CALL procedure_name;

在调用存储过程时,可以传递输入参数,以下是一个例子:

CALL add_employee(123, 'John', 5000);

这将调用 add_employee 存储过程,将值 123、'John' 和 5000 传递给输入参数 employee_idnamesalary。执行结果将是将新记录插入到 employee 表中。

执行 SQL 语句

在存储过程内部,可以使用 SQL 语句执行各种操作。下面是一些常见的 SQL 语句示例:

SELECT 语句

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 语句的语法:

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 语句的语法:

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 语句的语法:

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.