当前位置: 首页>>代码示例>>Golang>>正文


Golang C.OCIDescriptorFree函数代码示例

本文整理汇总了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
}
开发者ID:optimuse,项目名称:ora,代码行数:26,代码来源:bndBfile.go

示例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,
			&param, position)
	}
	if err := cur.environment.CheckStatus(
		C.OCIParamGet(unsafe.Pointer(cur.handle), C.OCI_HTYPE_STMT,
			cur.environment.errorHandle,
			(*unsafe.Pointer)(unsafe.Pointer(&param)), 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
}
开发者ID:salahwadif,项目名称:goracle,代码行数:32,代码来源:variable.go

示例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
}
开发者ID:optimuse,项目名称:ora,代码行数:25,代码来源:bndLobPtr.go

示例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
}
开发者ID:ricsmania,项目名称:ora,代码行数:25,代码来源:bndLobSlice.go

示例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
}
开发者ID:optimuse,项目名称:ora,代码行数:47,代码来源:bndLob.go

示例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 );
}
开发者ID:optimuse,项目名称:ora,代码行数:8,代码来源:bndIntervalYMSlice.go

示例7: free

func (def *defTime) free() {
	defer func() {
		recover()
	}()
	C.OCIDescriptorFree(
		unsafe.Pointer(def.ociDateTime), //void     *descp,
		C.OCI_DTYPE_TIMESTAMP_TZ)        //ub4      type );
}
开发者ID:optimuse,项目名称:ora,代码行数:8,代码来源:defTime.go

示例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 );
}
开发者ID:optimuse,项目名称:ora,代码行数:8,代码来源:bndTimeSlice.go

示例9: free

func (def *defBfile) free() {
	defer func() {
		recover()
	}()
	C.OCIDescriptorFree(
		unsafe.Pointer(def.ociLobLocator), //void     *descp,
		C.OCI_DTYPE_FILE)                  //ub4      type );
}
开发者ID:optimuse,项目名称:ora,代码行数:8,代码来源:defBfile.go

示例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
}
开发者ID:bradfitz,项目名称:go-sql-test,代码行数:9,代码来源:lobvar.go

示例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 );
}
开发者ID:optimuse,项目名称:ora,代码行数:8,代码来源:defIntervalDS.go

示例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
}
开发者ID:ricsmania,项目名称:ora,代码行数:9,代码来源:defLob.go

示例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
}
开发者ID:viney,项目名称:goracle,代码行数:11,代码来源:lobvar.go

示例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()
}
开发者ID:jprobinson,项目名称:go-oci8,代码行数:12,代码来源:oci8.go

示例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
}
开发者ID:tgulacsi,项目名称:go-sql-test,代码行数:13,代码来源:lobvar.go


注:本文中的C.OCIDescriptorFree函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。