" *****************************************************************************************************
*
*  timeparm.txt
*
*   This examples shows how to use setparam
*   The example is restricted to timestamp type parameters.
*
*
******************************************************************************************************"

|connection1  aTextDisplay connectString statement1 sqlStatement numParms parmValue
    parmSqlType|

aTextDisplay := TextWindow  windowLabeled: 'ODBC Interface - Using setparam'
                           frame: (0 @ 0 corner: 500 @ 500).
aTextDisplay cr.



" *** Open the connection ****"
connection1 := OdbcConnection open.
connection1 hasError
    ifTrue:
    [    aTextDisplay nextPutAll: connection1 getMessage; cr
    ].



" *** Driver  Connect ***  "
connectString :=  connection1 driverConnect: '' window: aTextDisplay
        driverCompletion: (OdbcDriverCompletions at: 'DRIVERPROMPT').

connection1 hasError
    ifTrue:
    [    aTextDisplay nextPutAll: connection1 getMessage; cr
    ].

" *** allocate a new statement *** "
statement1:= connection1 newStatement.
statement1 hasError
    ifTrue:
    [    aTextDisplay nextPutAll: statement1 getMessage; cr
    ].

" tstest has only one column
   create table tstest (t1 timestamp)"

sqlStatement:= 'insert into tstest values(?)'.


"*** prepare   ***"
statement1 prepare: sqlStatement.
statement1 hasError
    ifTrue:
    [    aTextDisplay nextPutAll: statement1 getMessage; cr
    ].


" Bind the parameter"
statement1 bindInputParameter: 1 fSqlType:TimeStamp fSqlType.
statement1 hasError
    ifTrue:
    [    aTextDisplay nextPutAll: statement1 getMessage; cr
    ].

"set the parameter value"
statement1 setParameter: 1 value: TimeStamp current asOdbcParameter.


"*** execute the statement  ***"
statement1 execute.
statement1 hasError
    ifTrue:
    [    aTextDisplay nextPutAll: statement1 getMessage; cr
    ].


"*** free the statement *** "
statement1 free: (OdbcConstants at: 'SQLDROP').
statement1 hasError
    ifTrue:
    [    aTextDisplay nextPutAll: statement1 getMessage; cr
    ].

" commit the statement - Watcom SQL does not autocommit ..."
connection1 commit.

       
" *** disconnect *** "
connection1 disconnect.
connection1 hasError
    ifTrue:
    [    aTextDisplay nextPutAll: connection1 getMessage; cr
    ].

 
" *** free the connection *** "
connection1 hasError
    ifTrue:
    [    aTextDisplay nextPutAll: connection1 getMessage; cr
    ].


connection1 free.
connection1 hasError
    ifTrue:
    [    aTextDisplay nextPutAll: connection1 getMessage; cr
    ].


aTextDisplay cr ; nextPutAll: '*** finished executing ***'.
