本文整理汇总了Golang中C.OCIDescriptorFree函数的典型用法代码示例。如果您正苦于以下问题:Golang OCIDescriptorFree函数的具体用法?Golang OCIDescriptorFree怎么用?Golang OCIDescriptorFree使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了OCIDescriptorFree函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: close
func (bnd *bndBfile) close() (err error) {
defer func() {
if value := recover(); value != nil {
err = errR(value)
}
}()
if bnd.cDirectoryAlias != nil {
C.free(unsafe.Pointer(bnd.cDirectoryAlias))
}
if bnd.cFilename != nil {
C.free(unsafe.Pointer(bnd.cFilename))
}
if bnd.ociLobLocator != nil {
C.OCIDescriptorFree(
unsafe.Pointer(bnd.ociLobLocator), //void *descp,
C.OCI_DTYPE_FILE) //ub4 type );
}
stmt := bnd.stmt
bnd.stmt = nil
bnd.ocibnd = nil
bnd.ociLobLocator = nil
bnd.cDirectoryAlias = nil
bnd.cFilename = nil
stmt.putBnd(bndIdxBfile, bnd)
return nil
}
示例2: varDefine
// Allocate a variable and define it for the given statement.
func (cur *Cursor) varDefine(numElements, position uint) (*Variable, error) {
var param *C.OCIParam
// retrieve parameter descriptor
if cur.handle == nil {
log.Printf("WARN: nil cursor handle in varDefine!")
}
// log.Printf("retrieve parameter descriptor cur.handle=%s pos=%d", cur.handle, position)
if CTrace {
ctrace("OCIParamGet(cur=%p, HTYPE_STMT, env=%p, param=%p, position=%d)",
cur.handle, "HTYPE_STMT", cur.environment.errorHandle,
¶m, position)
}
if err := cur.environment.CheckStatus(
C.OCIParamGet(unsafe.Pointer(cur.handle), C.OCI_HTYPE_STMT,
cur.environment.errorHandle,
(*unsafe.Pointer)(unsafe.Pointer(¶m)), C.ub4(position)),
"parameter"); err != nil {
log.Printf("NO PARAM! %s", err)
return nil, err
}
// log.Printf("got param handle")
// call the helper to do the actual work
v, err := cur.variableDefineHelper(param, position, numElements)
// log.Printf("variable defined err=%s nil?%s", err, err == nil)
if CTrace {
ctrace("OCIDescriptorFree(%p, DTYPE_PARAM)", param)
}
C.OCIDescriptorFree(unsafe.Pointer(param), C.OCI_DTYPE_PARAM)
return v, err
}
示例3: close
func (bnd *bndLobPtr) close() (err error) {
defer func() {
if value := recover(); value != nil {
err = errR(value)
}
}()
// no need to clear bnd.buf
// free temporary lob
C.OCILobFreeTemporary(
bnd.stmt.ses.srv.ocisvcctx, //OCISvcCtx *svchp,
bnd.stmt.ses.srv.env.ocierr, //OCIError *errhp,
bnd.ociLobLocator) //OCILobLocator *locp,
// free lob locator handle
C.OCIDescriptorFree(
unsafe.Pointer(bnd.ociLobLocator), //void *descp,
C.OCI_DTYPE_LOB) //ub4 type );
stmt := bnd.stmt
bnd.stmt = nil
bnd.value = nil
bnd.ocibnd = nil
bnd.ociLobLocator = nil
stmt.putBnd(bndIdxLobPtr, bnd)
return nil
}
示例4: close
func (bnd *bndLobSlice) close() (err error) {
defer func() {
if value := recover(); value != nil {
err = errR(value)
}
}()
for n := 0; n < len(bnd.ociLobLocators); n++ {
// free temporary lob
C.OCILobFreeTemporary(
bnd.stmt.ses.ocisvcctx, //OCISvcCtx *svchp,
bnd.stmt.ses.srv.env.ocierr, //OCIError *errhp,
bnd.ociLobLocators[n]) //OCILobLocator *locp,
// free lob locator handle
C.OCIDescriptorFree(
unsafe.Pointer(bnd.ociLobLocators[n]), //void *descp,
C.OCI_DTYPE_LOB) //ub4 type );
}
stmt := bnd.stmt
bnd.stmt = nil
bnd.ocibnd = nil
bnd.ociLobLocators = nil
stmt.putBnd(bndIdxBinSlice, bnd)
return nil
}
示例5: allocTempLob
func allocTempLob(stmt *Stmt) (
ociLobLocator *C.OCILobLocator,
finish func(),
err error,
) {
// Allocate lob locator handle
r := C.OCIDescriptorAlloc(
unsafe.Pointer(stmt.ses.srv.env.ocienv), //CONST dvoid *parenth,
(*unsafe.Pointer)(unsafe.Pointer(&ociLobLocator)), //dvoid **descpp,
C.OCI_DTYPE_LOB, //ub4 type,
0, //size_t xtramem_sz,
nil) //dvoid **usrmempp);
if r == C.OCI_ERROR {
return nil, nil, stmt.ses.srv.env.ociError()
} else if r == C.OCI_INVALID_HANDLE {
return nil, nil, errNew("unable to allocate oci lob handle during bind")
}
// Create temporary lob
r = C.OCILobCreateTemporary(
stmt.ses.srv.ocisvcctx, //OCISvcCtx *svchp,
stmt.ses.srv.env.ocierr, //OCIError *errhp,
ociLobLocator, //OCILobLocator *locp,
C.OCI_DEFAULT, //ub2 csid,
C.SQLCS_IMPLICIT, //ub1 csfrm,
C.OCI_TEMP_BLOB, //ub1 lobtype,
C.TRUE, //boolean cache,
C.OCI_DURATION_SESSION) //OCIDuration duration);
if r == C.OCI_ERROR {
// free lob locator handle
C.OCIDescriptorFree(
unsafe.Pointer(ociLobLocator), //void *descp,
C.OCI_DTYPE_LOB) //ub4 type );
return nil, nil, stmt.ses.srv.env.ociError()
}
return ociLobLocator, func() {
C.OCILobFreeTemporary(
stmt.ses.srv.ocisvcctx, //OCISvcCtx *svchp,
stmt.ses.srv.env.ocierr, //OCIError *errhp,
ociLobLocator) //OCILobLocator *locp,
// free lob locator handle
C.OCIDescriptorFree(
unsafe.Pointer(ociLobLocator), //void *descp,
C.OCI_DTYPE_LOB) //ub4 type );
}, nil
}
示例6: free
func (bnd *bndIntervalYMSlice) free(n int) {
defer func() {
recover()
}()
C.OCIDescriptorFree(
unsafe.Pointer(bnd.ociIntervals[n]), //void *descp,
C.OCI_DTYPE_INTERVAL_YM) //ub4 type );
}
示例7: free
func (def *defTime) free() {
defer func() {
recover()
}()
C.OCIDescriptorFree(
unsafe.Pointer(def.ociDateTime), //void *descp,
C.OCI_DTYPE_TIMESTAMP_TZ) //ub4 type );
}
示例8: free
func (bnd *bndTimeSlice) free(n int) {
defer func() {
recover()
}()
C.OCIDescriptorFree(
unsafe.Pointer(bnd.ociDateTimes[n]), //void *descp,
C.OCI_DTYPE_TIMESTAMP_TZ) //ub4 type );
}
示例9: free
func (def *defBfile) free() {
defer func() {
recover()
}()
C.OCIDescriptorFree(
unsafe.Pointer(def.ociLobLocator), //void *descp,
C.OCI_DTYPE_FILE) //ub4 type );
}
示例10: lobVar_Finalize
// Prepare for variable destruction.
func lobVar_Finalize(v *Variable) error {
for i := uint(0); i < v.allocatedElements; i++ {
if v.dataBytes != nil && uint(len(v.dataBytes)) > i && v.dataBytes[i] != 0 {
C.OCIDescriptorFree(unsafe.Pointer(&v.dataBytes[i]), C.OCI_DTYPE_LOB)
}
}
return nil
}
示例11: free
func (def *defIntervalDS) free() {
defer func() {
recover()
}()
C.OCIDescriptorFree(
unsafe.Pointer(def.ociInterval), //void *descp,
C.OCI_DTYPE_INTERVAL_DS) //timeDefine.descTypeCode) //ub4 type );
}
示例12: free
func (def *defLob) free() {
if def.ociLobLocator == nil { // dissociated or already freed
return
}
C.OCIDescriptorFree(
unsafe.Pointer(def.ociLobLocator), //void *descp,
C.OCI_DTYPE_LOB) //ub4 type );
def.ociLobLocator = nil
}
示例13: lobVarFinalize
// Prepare for variable destruction.
func lobVarFinalize(v *Variable) error {
var j int
for i := uint(0); i < v.allocatedElements; i++ {
j = int(i * v.typ.size)
if v.dataBytes != nil && len(v.dataBytes) > j && v.dataBytes[j] != 0 {
C.OCIDescriptorFree(unsafe.Pointer(&v.dataBytes[j]), C.OCI_DTYPE_LOB)
}
}
return nil
}
示例14: Close
func (rc *OCI8Rows) Close() error {
for _, col := range rc.cols {
if col.kind == C.SQLT_CLOB || col.kind == C.SQLT_BLOB {
C.OCIDescriptorFree(
col.pbuf,
C.OCI_DTYPE_LOB)
} else {
C.free(col.pbuf)
}
}
return rc.s.Close()
}
示例15: lobVarFinalize
// Prepare for variable destruction.
func lobVarFinalize(v *Variable) error {
if v == nil || v.dataBytes == nil {
return nil
}
for i := uint(0); i < v.allocatedElements; i++ {
if CTrace {
ctrace("lobVarFinalize(lob=%x)", v.getHandle(i))
}
C.OCIDescriptorFree(v.getHandle(i), C.OCI_DTYPE_LOB)
}
return nil
}