PostgreSQL 동적 테이블 시큐어 코딩
RETURN QUERY EXECUTE 구문은 PostgreSQL에서 동적으로 SQL 쿼리를 실행하고 결과를 반환하는 방법 중 하나입니다. 이 구문은 PL/pgSQL 프로시저 내부에서 사용됩니다.
아래는 RETURN QUERY EXECUTE 구문의 일반적인 형식입니다.
sql
Copy code
RETURN QUERY EXECUTE '
SQL QUERY HERE
';
이 구문은 SQL 쿼리를 동적으로 생성하고, 실행하며, 실행 결과를 반환합니다.
실제 SQL 쿼리를 작성할 때는 PL/pgSQL에서 사용할 수 있는 동적 SQL의 문법을 따라야 합니다. 예를 들어, 문자열을 인용부호로 감싸고, 인라인 파라미터를 사용하는 방법 등이 있습니다.
예를 들어, 다음은 RETURN QUERY EXECUTE 구문을 사용하여 동적으로 SQL 쿼리를 생성하는 PL/pgSQL 함수의 예입니다.
sql
Copy code
CREATE OR REPLACE FUNCTION get_data(table_name TEXT)
RETURNS TABLE (id INT, name TEXT)
AS $$
BEGIN
RETURN QUERY EXECUTE '
SELECT id, name
FROM ' || table_name || '
';
END;
$$ LANGUAGE plpgsql;
이 함수는 인자로 받은 테이블 이름에 대해 SELECT 쿼리를 실행하고, 그 결과를 id와 name 두 컬럼으로 구성된 테이블 형식으로 반환합니다. 반환되는 테이블의 구조는 RETURNS TABLE 구문에서 정의됩니다.
이 함수를 실행하면 다음과 같이 사용할 수 있습니다.
sql
Copy code
SELECT * FROM get_data('my_table');
이 쿼리는 my_table 테이블의 모든 레코드를 반환합니다.
댓글 쓰기
0 댓글