TStoredProc ExecProc 호출에서 params의 수 또는 params의 전체 크기에 제한이 있습니까?TStoredProc의 매개 변수 수에 제한이 있습니까?
현재 BDE를 사용하여 Oracle에 연결하고 최근 패키지 변경 절차에 대한 매개 변수 수를 변경 한 시스템이 실행되어 액세스 위반이 발생했습니다. 이제 매개 변수 수는 최대 291 개이며 AV는 TStoredProc의 ExecProc 호출에서 만들어집니다.
목록에서 단일 매개 변수를 제거하면 (모든 매개 변수가 특정 매개 변수 일 필요는 없습니다) ExecProc 호출이 올바르게 작동합니다.
코드를 통해 디버깅했으며 DBTables.pas 내의 TStoredProc.BindParams 프로 시저를 사용하여 액세스 위반이 발생했습니다. 몇 가지 시계를 설정했는데 그 중 하나가 SizeOf (FRecordBuffer)이고이 절차를 단계별로 수행하면 값은 65535입니다.이 값은 MaxWord (Windows.pas)입니다. DBTables 코드 내에 지정된 제한이 표시되지 않습니다.
호출 스택은 TStoredProd.ExecProc -> TStoredProc.CreateCursor -> TStoredProc.GetCursor -> TStoredProc.BindParams이며 FParams를 반복하는 for 루프에서 액세스 위반이 throw됩니다.
미리 감사 드리며, 우리는 우리가 명확하게 조종 할 수 있도록 할 수있는 것을 찾아야합니다.
Woohoo, 저장 프로 시저에 291 개의 매개 변수가 있습니까? 너 몇 가지를 놓치지 않아? – TLama
예,이 일을 쓰지는 않았지만 유지해야합니다. (> _ <) –
> * "DBTables 코드 내에서 지정된 제한이 보이지 않습니다."* 'FRecordSize'/ 'FRecBufSize'와 같이 DBTables에서 사용되는 다양한 Word가 있습니다. 개발자는 'Word'가 디자인의 일부분으로 충분해야한다고 생각했습니다. –