Subject | IBOQuery and Params |
---|---|
Author | Mr. Java Guy <holton@ix.netcom.com> |
Post date | 2002-12-14T17:22:03Z |
I am using the following code:
Codesite.SendStringList('SQL',Query.SQL);
for i := 0 to Query.Params.Count - 1 do
Codesite.SendString(Query.Params[i].Name,Query.Params
[i].AsString);
Query.Open;
This code is called multiple times with a close inbetween.
I also have an IB Monitor attached, that outputs to Codesite.
My Problem is that the IBOQuery seems to be holding the Param Value
from the previous Open.
Example output from the Codesite Log:
SELECT D.BOLD_ID, D.BOLD_TYPE, D.name, C.READ_ONLY
FROM Employee D, BOLD_OBJECT C
WHERE C.BOLD_ID = D.BOLD_ID AND D.BOLD_ID = :ID1
---------------------------------------------------------------------
ID1 = '1'
---------------------------------------------------------------------
/*---
[ 12/14/2002 9:16:38 AM ]
PREPARE STATEMENT
TR_HANDLE = 24206780
STMT_HANDLE = 24206616
SELECT D.BOLD_ID, D.BOLD_TYPE, D.name, C.READ_ONLY
FROM Employee D, BOLD_OBJECT C
WHERE C.BOLD_ID = D.BOLD_ID AND D.BOLD_ID = ? /* ID1 */
PLAN JOIN (D INDEX (RDB$PRIMARY75),C INDEX (RDB$PRIMARY74))
FIELDS = [ Version 1 SQLd 4 SQLn 30
EMPLOYEE.BOLD_ID[BOLD_ID] = <NIL>
EMPLOYEE.BOLD_TYPE[BOLD_TYPE] = <NIL>
EMPLOYEE.NAME[NAME] = <NIL>
BOLD_OBJECT.READ_ONLY[READ_ONLY] = <NIL> ]
----*/
---------------------------------------------------------------------
/*---
[ 12/14/2002 9:16:38 AM ]
EXECUTE STATEMENT
TR_HANDLE = 24206780
STMT_HANDLE = 24206616
PARAMS = [ Version 1 SQLd 1 SQLn 1
[ID1] = 1 ]
----*/
---------------------------------------------------------------------
SELECT D.BOLD_ID, D.BOLD_TYPE, D.name, C.READ_ONLY
FROM Employee D, BOLD_OBJECT C
WHERE C.BOLD_ID = D.BOLD_ID AND D.BOLD_ID = :ID1
---------------------------------------------------------------------
ID1 = '2'
---------------------------------------------------------------------
/*---
[ 12/14/2002 9:16:38 AM ]
PREPARE STATEMENT
TR_HANDLE = 24206780
STMT_HANDLE = 24206616
SELECT D.BOLD_ID, D.BOLD_TYPE, D.name, C.READ_ONLY
FROM Employee D, BOLD_OBJECT C
WHERE C.BOLD_ID = D.BOLD_ID AND D.BOLD_ID = ? /* ID1 */
PLAN JOIN (D INDEX (RDB$PRIMARY75),C INDEX (RDB$PRIMARY74))
FIELDS = [ Version 1 SQLd 4 SQLn 30
EMPLOYEE.BOLD_ID[BOLD_ID] = <NIL>
EMPLOYEE.BOLD_TYPE[BOLD_TYPE] = <NIL>
EMPLOYEE.NAME[NAME] = <NIL>
BOLD_OBJECT.READ_ONLY[READ_ONLY] = <NIL> ]
----*/
---------------------------------------------------------------------
/*---
[ 12/14/2002 9:16:38 AM ]
EXECUTE STATEMENT
TR_HANDLE = 24206780
STMT_HANDLE = 24206616
PARAMS = [ Version 1 SQLd 1 SQLn 1
[ID1] = 1 ]
----*/
---------------------------------------------------------------------
Any ideas why?
TIA,
Eric
Codesite.SendStringList('SQL',Query.SQL);
for i := 0 to Query.Params.Count - 1 do
Codesite.SendString(Query.Params[i].Name,Query.Params
[i].AsString);
Query.Open;
This code is called multiple times with a close inbetween.
I also have an IB Monitor attached, that outputs to Codesite.
My Problem is that the IBOQuery seems to be holding the Param Value
from the previous Open.
Example output from the Codesite Log:
SELECT D.BOLD_ID, D.BOLD_TYPE, D.name, C.READ_ONLY
FROM Employee D, BOLD_OBJECT C
WHERE C.BOLD_ID = D.BOLD_ID AND D.BOLD_ID = :ID1
---------------------------------------------------------------------
ID1 = '1'
---------------------------------------------------------------------
/*---
[ 12/14/2002 9:16:38 AM ]
PREPARE STATEMENT
TR_HANDLE = 24206780
STMT_HANDLE = 24206616
SELECT D.BOLD_ID, D.BOLD_TYPE, D.name, C.READ_ONLY
FROM Employee D, BOLD_OBJECT C
WHERE C.BOLD_ID = D.BOLD_ID AND D.BOLD_ID = ? /* ID1 */
PLAN JOIN (D INDEX (RDB$PRIMARY75),C INDEX (RDB$PRIMARY74))
FIELDS = [ Version 1 SQLd 4 SQLn 30
EMPLOYEE.BOLD_ID[BOLD_ID] = <NIL>
EMPLOYEE.BOLD_TYPE[BOLD_TYPE] = <NIL>
EMPLOYEE.NAME[NAME] = <NIL>
BOLD_OBJECT.READ_ONLY[READ_ONLY] = <NIL> ]
----*/
---------------------------------------------------------------------
/*---
[ 12/14/2002 9:16:38 AM ]
EXECUTE STATEMENT
TR_HANDLE = 24206780
STMT_HANDLE = 24206616
PARAMS = [ Version 1 SQLd 1 SQLn 1
[ID1] = 1 ]
----*/
---------------------------------------------------------------------
SELECT D.BOLD_ID, D.BOLD_TYPE, D.name, C.READ_ONLY
FROM Employee D, BOLD_OBJECT C
WHERE C.BOLD_ID = D.BOLD_ID AND D.BOLD_ID = :ID1
---------------------------------------------------------------------
ID1 = '2'
---------------------------------------------------------------------
/*---
[ 12/14/2002 9:16:38 AM ]
PREPARE STATEMENT
TR_HANDLE = 24206780
STMT_HANDLE = 24206616
SELECT D.BOLD_ID, D.BOLD_TYPE, D.name, C.READ_ONLY
FROM Employee D, BOLD_OBJECT C
WHERE C.BOLD_ID = D.BOLD_ID AND D.BOLD_ID = ? /* ID1 */
PLAN JOIN (D INDEX (RDB$PRIMARY75),C INDEX (RDB$PRIMARY74))
FIELDS = [ Version 1 SQLd 4 SQLn 30
EMPLOYEE.BOLD_ID[BOLD_ID] = <NIL>
EMPLOYEE.BOLD_TYPE[BOLD_TYPE] = <NIL>
EMPLOYEE.NAME[NAME] = <NIL>
BOLD_OBJECT.READ_ONLY[READ_ONLY] = <NIL> ]
----*/
---------------------------------------------------------------------
/*---
[ 12/14/2002 9:16:38 AM ]
EXECUTE STATEMENT
TR_HANDLE = 24206780
STMT_HANDLE = 24206616
PARAMS = [ Version 1 SQLd 1 SQLn 1
[ID1] = 1 ]
----*/
---------------------------------------------------------------------
Any ideas why?
TIA,
Eric