123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 |
- package xugu
- import (
- "errors"
- "fmt"
- )
- const RETURN_PREPARE_SELECT = 19665
- func xgCmdPrepare(pconn *xuguConn, cmd_sql string, prepareName *string) (int, error) {
- fmt.Println("\n>>>>>xgCmdPrepare")
- sqlRet := fmt.Sprintf("PREPARE %s AS %s", *prepareName, cmd_sql)
-
-
- pconn.mu.Lock()
- SockSendCommand0(pconn, sqlRet)
- var ch byte
- var ret int
- for {
- recvRet, err := rhRecvChar(pconn, &ch)
- if err != nil {
- return 0, err
- }
- if !recvRet {
- pconn.mu.Unlock()
- return -4, errors.New("XG_NET_ERROR")
- }
-
- if ch == 'A' {
-
-
-
-
-
-
-
- ret = RETURN_PREPARE_SELECT
- continue
- } else if ch == '$' {
- var params XGCSParam
- params.Type = HT_PARAMS
- params.ImpExpType = 2
- recvParamsInfo2(pconn, ¶ms)
- pconn.params = ¶ms
- continue
- } else if ch == 'K' {
- pconn.havePrepare = 1
- } else {
- var errStr []byte
- ret, err = rhRecvStr(pconn, &errStr)
- if ret < 0 || err != nil {
- pconn.mu.Unlock()
- return ret, err
- }
- pconn.errStr = errStr
- ret = XG_ERROR
- rhRecvChar(pconn, &ch)
- if ch != 'K' {
- pconn.bkChar = ch
- continue
- }
- }
- break
- }
- pconn.mu.Unlock()
- return ret, nil
- }
- func xgCmdUnprepare(pConn *xuguConn, prepareName string) int {
- fmt.Println("\n>>>>>xgCmdUnprepare")
- var ch byte
- var err error
- ret := XG_OK
- sql := fmt.Sprintf("DEALLOCATE %s ", prepareName)
- pConn.mu.Lock()
- SockSendCommand0(pConn, sql)
- boolRet, err := rhRecvChar(pConn, &ch)
- fmt.Println("rhRecvChar => ch ", ch)
- if boolRet || err != nil {
- ret = XG_NET_ERROR
- } else if ch == 'K' {
- pConn.havePrepare = 0
- } else {
- pConn.havePrepare = 0
- var errStre []byte
- ret, err = rhRecvStr(pConn, &errStre)
- if err != nil || ret < 0 {
- pConn.mu.Unlock()
- return ret
- }
- rhRecvChar(pConn, &ch)
- ret = XG_ERROR
- }
- pConn.mu.Unlock()
- return 0
- }
- func XGC_Execute(pConn *xuguConn, sql string) int {
- fmt.Println("\n ---XGC_Execute")
-
- SockSendCommand0(pConn, sql)
- return 0
- }
- func send_params(p_conn *xuguConn, p_params *XGCSParam) {
- fmt.Println("--- send_params(p_conn *xuguConn, p_params *XGCSParam)")
- }
|