Golang 개발 과정에서 "ORA-00911: 잘못된 문자"와 같은 오류가 가끔 발생합니다. 이 오류는 일반적으로 SQL 문에 잘못된 문자를 사용하여 발생합니다. 이 문제를 해결하기 위해 몇 가지 간단한 방법을 사용할 수 있습니다. 먼저, SQL 문을 실행하기 전에 해당 문에 특수 문자나 유효하지 않은 문자가 있는지 주의 깊게 확인해야 합니다. 둘째, 오류를 방지하기 위해 특수 문자가 포함된 필드나 값을 따옴표로 묶을 수 있습니다. 또한 SQL 문에서 특수 문자가 올바르게 인식되고 처리되도록 이스케이프 문자를 사용하여 특수 문자를 처리할 수도 있습니다. 이러한 방법을 통해 Golang의 "ORA-00911: 잘못된 문자" 문제를 효과적으로 해결하고 프로그램이 정상적으로 실행되도록 할 수 있습니다.
다음 함수를 호출할 때 "ORA-00911: 잘못된 문자" 오류가 발생했습니다. 하드코딩된 값이 포함된 SQL 쿼리를 사용하는 경우(현재는 아래 코드 조각에 주석 처리되어 있음) 문제 없이 Postman의 JSON 응답에서 데이터베이스 레코드를 가져올 수 있습니다. 그래서 제 주장이 잘못 된 것 같습니다. 참고로 저는 "github.com/sijms/go-ora/v2" 패키지를 사용하여 oracle db에 연결하고 있습니다. 또한 "DashboardRecordsRequest" 구조는 데이터 모델 패키지에 있지만 참조용으로 아래 스니펫에 붙여넣었습니다. POC를 수행할 때 저장 프로시저를 사용하여 Oracle과 상호 작용할 것이라는 점에 유의하십시오.
우체부 요청 로드:
으아악실행 코드:
으아악요청 테이블 구조:
으아악오류:
<code>{ "username": "UserABC", "startindex": 0, "pagesize": 10, "sortby": "requestnumber", "sortorder": "DESC" } </code>
즉각적인 문제는 JDBC 스타일 ?
绑定占位符,而不是预期的 :var
形式。从 go-ora
패키지를 사용하고 있다는 것입니다. 문서 에서 다음을 사용하고 있다고 말합니다.
따라서 귀하의 stmt
은 다음과 같아야 합니다:
하지만 변수 이외의 다른 것을 바인딩할 수 없으므로 sortorder
변수를 제거하고 다음을 수행하면 전혀 변수로 사용할 수 없습니다.
이것은 작동하는 것처럼 보이지만 정렬은 값이 아닌 리터럴 열 이름을 기준으로 정렬되므로 ORDER BY 'requestnumber'
的等效项运行,而不是 ORDER BY requestnumber
처럼 작동하므로 원하는 대로 작동하지 않습니다. 그리고 해당 상수 문자열을 기준으로 정렬하면 아무 것도 달성되지 않습니다.
문에 주문 기준을 포함해야 합니다.
으아악dba8093152e673feb7aba1828c43532094fiddle은 PL/SQL 동적 커서를 단순화된 등가물로 사용하여 세 가지 버전(잘못된 버전, 예상대로 주문되지 않은 버전, 최종적으로는 정상적으로 주문된 버전)을 표시합니다.
그러나 SQL 주입을 다시 방지하려면 이러한 입력을 삭제해야 합니다.
위 내용은 Golang에서 'ORA-00911: 잘못된 문자' 오류를 해결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!