[정의 문법]
DELIMITER //
CREATE PROCEDURE procedure_name(parameter_list)
BEGIN
statements;
END //
DELIMITER ;
[정의 예]
DELIMITER //
CREATE PROCEDURE return_session_details()
BEGIN
SELECT *
FROM test.keeyong_session_details;
END //
DELIMITER;
[호출 문법]
CALL stored_procedure_name(argument_list);
[호출 예]
CALL return_session_details();
[IN 파라미터]
DROP PROCEDURE IF EXISTS return_session_details;
DELIMITER //
CREATE PROCEDURE return_session_details(IN channelName varchar(64))
BEGIN
SELECT *
FROM test.keeyong_session_details
WHERE channel = channelName;
END //
DELIMITER ;
CALL return_session_details('Facebook');
[INOUT 파라미터]
DROP PROCEDURE IF EXISTS return_session_count;
DELIMITER //
CREATE PROCEDURE return_session_count(IN channelName varchar(64), INOUT
totalRecord int)
BEGIN
SELECT COUNT(1) INTO totalRecord FROM test.keeyong_session_details
WHERE channel = channelName;
END //
DELIMITER ;
SET @facebook_count = 0
CALL return_session_count('Facebook', @facebook_count);
SELECT @facebook_count;
[정의 예]
DELIMITER $$
CREATE FUNCTION test.Channel_Type(channel varchar(32))
RETURNS VARCHAR(20)
DETERMINISTIC
BEGIN
DECLARE channel_type VARCHAR(20); --> Stored Procedure나 Stored Function 내에서 변수 선언은 DECLARE
IF channel in ('Facebook', 'Instagram', 'Tiktok') THEN
SET channel_type = 'Social Network';
ELSEIF channel in ('Google', 'Naver') THEN
SET channel_type = 'Search Engine';
ELSE
SET channel_type = channel;
END IF;
-- return the customer level
RETURN (channel_type);
END$$
[호출 예]
SELECT channel, test.Channel_Type(channel)
FROM prod.channel;