ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [MSSQL] 10일 만에 마스터하는 MS SQL 실무 9, 10 편
    Backend/database 2024. 2. 18. 14:07

    사용자 정의 함수

    scalar 함수 > SUM이나 AVG 처럼 값을 반환하는 함수

     

    CREATE FUNCTION <FUNCTION_NAME> (
    	@<INPUT_VARIABLE> // 값을 담을 수 있는 매개변수, 필요하지 않으면 생략 가능
    )
    RETURNS <DATA_TYPE>
    AS
    BEGIN
    <SQL_QUERY>
    RETURN <RETURN_VALUE>
    END

     

    TABLE 함수

     

    CREATE FUNCTION <FUNCTION_NAME> (
    	@<INPUT_VARIABLE>
    )
    RETURNS TABLE
    AS
    RETURN (<RETURN_TABLE_QUERY>)

     

    CREATE FUNCTION <FUNCTION_NAME> (
    		@<INPUT_VARIABLE>
    )
    RETURNS @RETURN_TABLE TABLE ( -- 어떤 형식의 테이블을 반환할 지 명명
    	<TABLE DEFINITION>
    )
    AS
    BEGIN
    
    <QUERY>
    INSERT INTO @RETURN_TABLE <TABLE_RETURN_QUERY> -- 그 형식에 일치하는 데이터를 INSERT 하면 해당 값이 반환됨
    
    RETURN
    END

     

    저장 프로시저

    > SQL에서 제공하는 프로그래밍 기능

    > 함수보다 폭넓은 동작을 수행함

    >> 복잡한 비즈니스 로직을 넣을 수 있고, 데이터 처리를 수행할 수도 있음

     

    CREATE PROCEDURE <PROCEDURE_NAME>
    		@<PARAMETERS>
    AS
    BEGIN
    <SQL_QUERY>
    END

     

    프로시저를 수정하는 SYNTAX

    ALTER PROCEDURE <PROCEDURE NAME>
    		@<PARAMETERS>
    AS
    BEGIN
    <SQL_QUERY>
    END

     

    프로시저를 삭제하는 SYNTAX

    DROP PROCEDURE <PROCEDURE NAME>

     

     

    IF ELSE 문

    > BEGIN ... END 로 쿼리문들을 묶어줘야 함

    >> BEGIN과 END 사이의 구문을 실행하는 것

    >> 그렇지 않을 경우, 첫 문장만 실행되거나 오류를 반환한다.

    // IF ELSE 문을 만드는 SYNTAX
    IF <조건문>
    	BEGIN
        	<SQL_QUERY1>
        END
    ELSE
    	BEGIN
        	<SQL_QUERY2>
        END

     

     

    동적 SQL

    > 코드를 문자열로 만든 다음 그 문자열을 실행시키는 방법

    >> "SELECT * FROM COMPANYINFO" 라는 문자열을 어떤 문자열 변수에 저장시킨 다음 그 문자열을 수행시키는 것

     

    SELECT * FROM STUDY.DBO.COMPANYINFO =

    EXEC('SELECT * FROM STUDY.DBO.COMPANYINFO')

     

    필요한 경우?

    > 매개변수로 테이블 명을 받아 해당 테이블의 값을 출력하고 싶은 경우

     

    > 동적 쿼리를 사용 시, 기존 SQL 쿼리에 비해 다양한 동작 수행이 가능하다

Designed by Tistory.