Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 SELECT 문으로 저장 프로시저를 호출하는 방법

MySQL에서는 SELECT 문의 FROM 절에 저장 프로시저를 직접 사용할 수 없습니다. 대신 CALL 명령어로 저장 프로시저를 먼저 호출한 후, 그다음 SELECT 문을 실행하여 결과를 확인하는 방식을 사용해야 합니다.

1. 테이블 생성하기

먼저 예제에 사용할 테이블을 생성하겠습니다.

mysql> create table DemoTable2
    -> (
    -> CustomerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> CustomerName varchar(100),
    -> ShippingDateTime datetime
    -> );
Query OK, 0 rows affected (0.66 sec)

2. 저장 프로시저 생성하기

다음은 데이터를 삽입하는 저장 프로시저를 만드는 쿼리입니다.

mysql> DELIMITER //
mysql> CREATE PROCEDURE insert_information(Name varchar(100),shippingtime datetime)
    -> BEGIN
    ->
    -> INSERT INTO DemoTable2(CustomerName,ShippingDateTime) VALUES(Name,shippingtime);
    -> END
    -> //
Query OK, 0 rows affected (0.16 sec)

mysql> DELIMITER ;

DELIMITER //로 구분 기호를 변경한 후 프로시저 본문을 정의하고, 마지막에 다시 원래 구분 기호(;)로 되돌리는 것이 일반적인 작성 패턴입니다.

3. CALL 명령어로 저장 프로시저 호출하기

이제 CALL 명령어를 사용하여 저장 프로시저를 호출할 수 있습니다.

mysql> call insert_information('Chris',NOW());
Query OK, 1 row affected, 1 warning (0.15 sec)

4. SELECT 문으로 결과 확인하기

저장 프로시저를 호출한 후, 아래와 같이 SELECT 문을 실행하여 테이블에 저장된 레코드를 조회합니다.

mysql> select *from DemoTable2;

위 쿼리를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.

+------------+--------------+---------------------+
| CustomerId | CustomerName | ShippingDateTime |
+------------+--------------+---------------------+
| 1 | Chris | 2019-04-08 15:03:07 |
+------------+--------------+---------------------+
1 row in set (0.00 sec)

정리

MySQL에서는 SQL Server처럼 SELECT * FROM 프로시저명 형태로 저장 프로시저의 결과를 바로 조회할 수 없습니다. 반드시 CALL 명령어로 프로시저를 실행한 뒤, 필요하다면 임시 테이블에 결과를 담아 SELECT로 조회하는 절차를 거쳐야 한다는 점을 기억해 두시기 바랍니다.