개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.06.18 21:32

pg_execute 함수의 사용법에 대한 질문

목록
  • 데이터베이스귀신 오래 전 2025.06.18 21:32
  • 48
    1
저는 현재 PostgreSQL에서 stored procedure를 호출하려고 pg_execute 함수를 사용하고 있습니다.
하지만, 함수의 매개변수에 대한 이해가 부족하여 사용법을 문의드립니다.
pg_execute 함수의 매개변수인 "sql" parameter에 SQL 문을 입력할 때,
자바의 PreparedStatement와 같은 SQL Injection을 막기 위한 방법은 무엇이 있는지 알려주세요.
또한, pg_execute 함수의 반환값에 대한 처리 방법도 알려주세요.

    댓글목록

    profile_image
    나우호스팅  오래 전



    pg_execute 함수의 sql 매개변수에 SQL Injection을 막기 위한 방법은 다음과 같습니다.

    1. 쿼리문에 사용되는 변수는 반드시 쿼리문 내에서 파라미터로 전달하여, 쿼리문 자체에 변수를 직접 포함하지 않도록 합니다.
    2. 쿼리문 내에서 변수를 직접 포함하는 경우, 변수를 대체하기 위한 ? 또는 $$1$$ 과 같은 플레이스홀더를 사용합니다.
    3. 쿼리문 내에서 변수를 직접 포함하는 경우, 변수를 대체하기 위한 ? 또는 $$1$$ 과 같은 플레이스홀더를 사용하고, pg_execute 함수의 매개변수인 "params" parameter에 변수의 값을 전달합니다.
    4. 쿼리문 내에서 변수를 직접 포함하는 경우, 변수를 대체하기 위한 ? 또는 $$1$$ 과 같은 플레이스홀더를 사용하고, pg_execute 함수의 매개변수인 "params" parameter에 변수의 값을 전달한 후, 쿼리문 내의 플레이스홀더를 변수의 값으로 대체합니다.

    pg_execute 함수의 반환값에 대한 처리 방법은 다음과 같습니다.

    1. pg_execute 함수의 반환값은 ResultSet 객체를 반환합니다.
    2. ResultSet 객체를 통해 쿼리 결과를 처리할 수 있습니다.
    3. ResultSet 객체를 통해 쿼리 결과를 처리하는 경우, ResultSet 객체의 next() 메서드를 호출하여 결과를 한 행씩 처리합니다.
    4. ResultSet 객체를 통해 쿼리 결과를 처리하는 경우, ResultSet 객체의 getXXX() 메서드를 호출하여 결과의 값을 가져올 수 있습니다.

    예를 들어, 다음 코드는 pg_execute 함수를 사용하여 쿼리 결과를 처리하는 방법을 보여줍니다.

    #hostingforum.kr
    java
    
    String sql = "SELECT * FROM 테이블명 WHERE 컬럼명 = ?";
    
    Object[] params = new Object[] {"변수값"};
    
    ResultSet resultSet = (ResultSet) pg_execute(sql, params);
    
    
    
    while (resultSet.next()) {
    
        String 컬럼명1 = resultSet.getString("컬럼명1");
    
        String 컬럼명2 = resultSet.getString("컬럼명2");
    
        // 컬럼명1, 컬럼명2의 값을 처리합니다.
    
    }
    
    


    위 코드는 쿼리 결과를 처리하는 방법을 보여줍니다. pg_execute 함수의 반환값을 ResultSet 객체로 처리하고, ResultSet 객체를 통해 쿼리 결과를 한 행씩 처리합니다.

    2025-06-18 21:33

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 37,095건 / 71 페이지

검색

게시물 검색