Oracle (12) PL/SQL 저장 프로 시저를 호출하는 VB6 앱이 있습니다. ADODB 연결 개체를 사용합니다.ADO를 다듬어 사용하는 VB6의 매개 변수를 방지하는 방법
응용 프로그램에서 전달 된 문자열 매개 변수에는 공백이있을 수 있습니다. 오라클이이를 받으면 후행 공백이 사라집니다.
후행 공백을 남기고 싶습니다. 나는 모든 곳을 수색했는데 후행 공백이 매개 변수에서 다듬어 져야한다고 말하는 VB, ADO 또는 Oracle의 동작에 대한 온라인 참조를 찾을 수 없습니다.
Oracle에서 저장 프로 시저에 대한 매개 변수는 varchar2로 정의됩니다. VB6에서는 CreateParameter()를 사용하여 매개 변수를 adVarChar로 추가합니다 (다른 문자열 유형을 시도했지만 도움이되지 않습니다). 호출은 이름, 유형, 방향, 크기 및 값을 지정합니다.
Execute 호출 바로 전에 Command.Parameters 컬렉션을 검사하여 후행 공백이 있는지 확인할 수 있습니다.
Oracle 참조는 varchar2 데이터 형식에서 후행 공백이 이 아니고이 무시된다는 것을 명시 적으로 나타냅니다.
VB 또는 데이터베이스에서이 문제의 원인이 될 수있는 옵션이 있는지 설명 할 수 있습니까?
코드를 보여 주실 수 있습니까? –
IIRC에서 후행 공백은 DB에 저장되며 값을 검색하면 거기에 있습니다. 그것들은 무시됩니다. 즉, WHERE 절과 CASE 형 검사를 할 때'Foo'가'Foo'와 같다고 SQL 언어 표준이 말합니다. –
아, 주제에 대한 몇 가지 문서가 있습니다. 오라클이 아닌 SQL Server에서 왔지만, 오라클이 ansi 표준을 참조하고 있습니다 (Ansi SQL-92, 섹션 8.2, <비교 조건>, 일반 규칙 # 3) https://support.microsoft .com/ko-kr/kb/316626 Sql Server에서는 동등 비교 대신 LIKE 비교를 수행하여이 문제를 해결할 수 있습니다. 오라클이 동일한 동작을하는지는 알 수 없습니다. –