이전 목록 다음

PHP MSSQL 연동 에러 질문입니다.

외부 MSSQL 연동 후 프로시저 실행 시키는데 코드를 실행시키면 

자꾸 

SQLSTATE[42000]: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]하위 쿼리에서 값을 둘 이상 반환했습니다. 하위 쿼리 앞에 =, !=, <, <=, >, >= 등이 오거나 하위 쿼리가 하나의 식으로 사용된 경우에는 여러 값을 반환할 수 없습니다.

이 문구가 출력됩니다.

어느 부분을 수정해야 될까요?

Copy
try {

    // PDO 객체를 생성하여 MSSQL에 연결합니다.

    $conn = new PDO("sqlsrv:Server=$serverName;Database=$dbname", $user, $password);

 

    // 에러 모드를 예외로 설정합니다.

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

 

    // 저장 프로시저를 실행할 SQL 문을 작성합니다.

    // $sql = "EXEC UP_H1CTI_OPDIN_C$002 @CLINIC_YMD, @CLINIC_TIME, @DEPT_CD, @DOCT_EMPL_NO, @MEMO, @COME_TYPE_GB, @PTNT_NM, @PTNT_PRSN_NO, @PHONE_NO, @RSRV_USER_GB";

    $sql = "{call UP_H1CTI_OPDIN_C$002 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)}";

   

    // PDOStatement 객체를 생성합니다.

    $stmt = $conn->prepare($sql);

 

    // 저장 프로시저에 전달할 매개 변수 값을 설정합니다.

    $param1 = $ReserveDate;

    $param2 = $ReserveTime;

    $param3 = $DEPT_CD;

    $param4 = $DOCT_CD;

    $param5 = $memo;

    $param6 = $come_type;

    $param7 = $ReserveName;

    $param8 = $Jumin;

    $param9 = $tel;

    $param10 = "P";

    $msg = null;

    $stmt->bindParam(1, $param1, PDO::PARAM_STR);

    $stmt->bindParam(2, $param2, PDO::PARAM_STR);

    $stmt->bindParam(3, $param3, PDO::PARAM_STR);

    $stmt->bindParam(4, $param4, PDO::PARAM_INT);

    $stmt->bindParam(5, $param5, PDO::PARAM_STR);

    $stmt->bindParam(6, $param6, PDO::PARAM_STR);

    $stmt->bindParam(7, $param7, PDO::PARAM_STR);

    $stmt->bindParam(8, $param8, PDO::PARAM_STR);

    $stmt->bindParam(9, $param9, PDO::PARAM_STR);

    $stmt->bindParam(10, $param10, PDO::PARAM_STR);

 

    // 저장 프로시저를 실행합니다.

    $stmt->execute();

 

    // 결과를 가져옵니다.

    $result = $stmt->fetchAll();

 

    // 결과를 처리합니다.

    foreach ($result as $row) {

        // 각 행의 필드 값을 출력합니다.

        echo "필드1: " . $row['MSG'] . "<br>";

    }

 

} catch (PDOException $e) {

    // 연결 중 오류가 발생했을 때 처리할 예외 코드를 작성합니다.

    echo "Connection failed: " . print_r($e);

}
|

답변 2개

위 부분이 프로시져를 호출해서 쿼리를 쓰고 있기때문에 위 소스로만 확인은 불가한 부분입니다.

2023-06-19 (월) 08:15:45
UP_H1CTI_OPDIN_C 프로시저 내용을 봐야 알 수 있겠네요.

답변을 작성하려면 로그인이 필요합니다.