- 보편적으로 사용하는 네이밍 규칙입니다. 각각의 회사 별로 지정한 네이밍 규칙은 달라집니다. 1. 함수의 이름은 일반적으로 동사나 동사구로 시작합니다. 2. 함수가 수행하는 작업을 설명하는 이름으로 지정해야 합니다. 3. 함수의 이름은 명확하고 간결해야 하며 이름이 너무 길 경우, 코드를 읽기 어려워질 수 있습니다. 예시) GET_TOTAL_AMOUNT, CALCULATE_AVERAGE_SALES
💡 SQL Procedure의 네이밍 규칙
- 보편적으로 사용하는 네이밍 규칙입니다. 각각의 회사 별로 지정한 네이밍 규칙은 달라집니다.
1. 패키지명, 프로시저명을 모두 대문자로 작성합니다. 2. 프로시저의 목적을 나타내도록 작성합니다. 3. 프로시저 이름은 동사로 시작합니다. 4. 프로시저 이름은 띄어쓰기를 사용하지 않고, 단어 사이에 언더바('_')를 사용합니다. 5. 프로시저 이름은 가능한 짧게 작성합니다.
CREATEfunction multiflex_scma.hello_world(name TEXT)
RETURNS TEXT AS $$
DECLARE
greeting TEXT;
BEGIN
greeting :='Hello, '|| name ||'!';
RETURN greeting;
END;
$$ LANGUAGE plpgsql;;
[ 예시 설명 ]
- 1행: hello_world라는 이름에 인자로 name을 받는 함수를 생성하였습니다. - 2행: 해당 함수의 반환 값은 TEXT 타입입니다. - 4행~5행: 함수 내부적으로 변수로 greeting이라는 TEXT 타입의 변수를 선언하였습니다. - 6행~9행: greeting 변수는 name 인자와 "Hello, " 및 "!" 문자열을 연결한 문자열로 설정됩니다. 마지막으로 함수는 greeting 변수를 반환합니다.
💡 최종적으로 hello_world 함수에 name의 인자를 넣어서 호출을 하면 hello, {name}!이라는 문자열을 반환해 주는 함수입니다.
[ 더 알아보기 ]
💡 CREATE function과 CREATE OR REPLACE FUNCTION의 차이
- CREATE FUNCTION: 함수가 존재하지 않을 때만 함수가 생성됩니다. 이미 존재하는 함수 이름이 있으면 오류가 발생합니다. CREATE OR REPLACE FUNCTION: 함수가 이미 존재하면, 기존 함수를 대체합니다. 함수가 존재하지 않으면 새로운 함수가 생성됩니다.
6.2. Procedure 구성
CREATEPROCEDURE hello_world(name TEXT)
LANGUAGE plpgsql
AS $$
DECLARE
greeting TEXT;
BEGIN
greeting :='Hello, '|| name ||'!';
RAISE NOTICE '%', greeting;
END;
$$;
[ 예시 설명 ]
- 1행: hello_world라는 이름에 인자로 name을 받는 프로시저를 생성하였습니다. - 2행: 해당 프로시저가 작성된 언어를 지정합니다. - 4행~5행: 함수 내부적으로 변수로 greeting이라는 TEXT 타입의 변수를 선언하였습니다. - 6행~7행: greeting 변수는 name 인자와 "Hello, " 및 "!" 문자열을 연결한 문자열로 설정됩니다. - 8행 : 해당 프로시저가 종료되기 전 콘솔로 전달이 됩니다.
💡 최종적으로 hello_world 프로시저에 name의 인자를 넣어서 호출을 하면 hello, {name}!이라는 문자열을 콘솔로 반환해 주는 프로시저입니다.
- SQL에서 함수는 단일 값이나 값 테이블을 반환하는 데 사용되며 프로시저는 특정 작업이나 작업을 수행하는 데 사용됩니다 . - 함수는 값이나 값 테이블을 반환하는 데 사용되며 프로시저는 특정 작업이나 작업을 수행하는 데 사용됩니다. 이러한 이유로 함수는 반환된 값을 검색하기 위해 'select' 문을 사용하여 호출되고 프로시저는 프로시저 내에 정의된 작업 집합을 실행하기 위해 'call' 문을 사용하여 호출됩니다.