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


Golang C.sb2函数代码示例

本文整理汇总了Golang中C.sb2函数的典型用法代码示例。如果您正苦于以下问题:Golang sb2函数的具体用法?Golang sb2怎么用?Golang sb2使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了sb2函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。

示例1: value

func (def *defFloat32) value() (value interface{}, err error) {
	if def.isNullable {
		oraFloat32Value := Float32{IsNull: def.null < C.sb2(0)}
		if !oraFloat32Value.IsNull {
			var float32Value float32
			r := C.OCINumberToReal(
				def.rset.stmt.ses.srv.env.ocierr,       //OCIError              *err,
				&def.ociNumber,                         //const OCINumber     *number,
				C.uword(4),                             //uword               rsl_length,
				unsafe.Pointer(&oraFloat32Value.Value)) //void                *rsl );
			if r == C.OCI_ERROR {
				err = def.rset.stmt.ses.srv.env.ociError()
			}
			value = float32Value
		}
		value = oraFloat32Value
	} else {
		if def.null > C.sb2(-1) {
			var float32Value float32
			r := C.OCINumberToReal(
				def.rset.stmt.ses.srv.env.ocierr, //OCIError              *err,
				&def.ociNumber,                   //const OCINumber     *number,
				C.uword(4),                       //uword               rsl_length,
				unsafe.Pointer(&float32Value))    //void                *rsl );
			if r == C.OCI_ERROR {
				err = def.rset.stmt.ses.srv.env.ociError()
			}
			value = float32Value
		}
	}
	return value, err
}
开发者ID:optimuse,项目名称:ora,代码行数:32,代码来源:defFloat32.go

示例2: value

func (def *defUint64) value() (value interface{}, err error) {
	if def.isNullable {
		oraUint64Value := Uint64{IsNull: def.null < C.sb2(0)}
		if !oraUint64Value.IsNull {
			r := C.OCINumberToInt(
				def.rset.stmt.ses.srv.env.ocierr,      //OCIError              *err,
				&def.ociNumber,                        //const OCINumber       *number,
				C.uword(8),                            //uword                 rsl_length,
				C.OCI_NUMBER_UNSIGNED,                 //uword                 rsl_flag,
				unsafe.Pointer(&oraUint64Value.Value)) //void                  *rsl );
			if r == C.OCI_ERROR {
				err = def.rset.stmt.ses.srv.env.ociError()
			}
		}
		value = oraUint64Value
	} else {
		if def.null > C.sb2(-1) {
			var uint64Value uint64
			r := C.OCINumberToInt(
				def.rset.stmt.ses.srv.env.ocierr, //OCIError              *err,
				&def.ociNumber,                   //const OCINumber       *number,
				C.uword(8),                       //uword                 rsl_length,
				C.OCI_NUMBER_UNSIGNED,            //uword                 rsl_flag,
				unsafe.Pointer(&uint64Value))     //void                  *rsl );
			if r == C.OCI_ERROR {
				err = def.rset.stmt.ses.srv.env.ociError()
			}
			value = uint64Value
		}
	}
	return value, err
}
开发者ID:optimuse,项目名称:ora,代码行数:32,代码来源:defUint64.go

示例3: bind

func (bnd *bndTimePtr) bind(value *time.Time, position int, stmt *Stmt) error {
	bnd.stmt = stmt
	bnd.value = value
	r := C.OCIDescriptorAlloc(
		unsafe.Pointer(bnd.stmt.ses.srv.env.ocienv),         //CONST dvoid   *parenth,
		(*unsafe.Pointer)(unsafe.Pointer(&bnd.ociDateTime)), //dvoid         **descpp,
		C.OCI_DTYPE_TIMESTAMP_TZ,                            //ub4           type,
		0,   //size_t        xtramem_sz,
		nil) //dvoid         **usrmempp);
	if r == C.OCI_ERROR {
		return bnd.stmt.ses.srv.env.ociError()
	} else if r == C.OCI_INVALID_HANDLE {
		return errNew("unable to allocate oci timestamp handle during bind")
	}
	if value == nil {
		bnd.isNull = C.sb2(-1)
	} else {
		zone := zoneOffset(*value, &bnd.zoneBuf)
		bnd.cZone = C.CString(zone)
		r = C.OCIDateTimeConstruct(
			unsafe.Pointer(bnd.stmt.ses.srv.env.ocienv), //dvoid         *hndl,
			bnd.stmt.ses.srv.env.ocierr,                 //OCIError      *err,
			bnd.ociDateTime,                             //OCIDateTime   *datetime,
			C.sb2(value.Year()),                         //sb2           year,
			C.ub1(int32(value.Month())),                 //ub1           month,
			C.ub1(value.Day()),                          //ub1           day,
			C.ub1(value.Hour()),                         //ub1           hour,
			C.ub1(value.Minute()),                       //ub1           min,
			C.ub1(value.Second()),                       //ub1           sec,
			C.ub4(value.Nanosecond()),                   //ub4           fsec,
			(*C.OraText)(unsafe.Pointer(bnd.cZone)),     //OraText       *timezone,
			C.size_t(len(zone)))                         //size_t        timezone_length );
		if r == C.OCI_ERROR {
			return bnd.stmt.ses.srv.env.ociError()
		}
	}
	r = C.OCIBINDBYPOS(
		bnd.stmt.ocistmt,                              //OCIStmt      *stmtp,
		(**C.OCIBind)(&bnd.ocibnd),                    //OCIBind      **bindpp,
		bnd.stmt.ses.srv.env.ocierr,                   //OCIError     *errhp,
		C.ub4(position),                               //ub4          position,
		unsafe.Pointer(&bnd.ociDateTime),              //void         *valuep,
		C.LENGTH_TYPE(unsafe.Sizeof(bnd.ociDateTime)), //sb8          value_sz,
		C.SQLT_TIMESTAMP_TZ,                           //ub2          dty,
		unsafe.Pointer(&bnd.isNull),                   //void         *indp,
		nil,           //ub2          *alenp,
		nil,           //ub2          *rcodep,
		0,             //ub4          maxarr_len,
		nil,           //ub4          *curelep,
		C.OCI_DEFAULT) //ub4          mode );
	if r == C.OCI_ERROR {
		return bnd.stmt.ses.srv.env.ociError()
	}
	return nil
}
开发者ID:ricsmania,项目名称:ora,代码行数:55,代码来源:bndTimePtr.go

示例4: value

func (def *defString) value() (value interface{}, err error) {
	if def.isNullable {
		oraStringValue := String{IsNull: def.null < C.sb2(0)}
		if !oraStringValue.IsNull {
			oraStringValue.Value = string(def.buf[:int(def.rlen)])
		}
		return oraStringValue, nil
	}
	if def.null < C.sb2(0) {
		return "", nil
	}
	return string(def.buf[:int(def.rlen)]), nil
}
开发者ID:ricsmania,项目名称:ora,代码行数:13,代码来源:defString.go

示例5: dateTimeVarSetValue

func dateTimeVarSetValue(v *Variable, pos uint, value interface{}) error {
	x, ok := value.(time.Time)
	if !ok {
		a, ok := value.([]time.Time)
		if !ok {
			return fmt.Errorf("awaited time.Time or []time.Time, got %T", value)
		}
		var err error
		for i, x := range a {
			if err = dateTimeVarSetValue(v, pos+uint(i), x); err != nil {
				return err
			}
		}
		return nil
	}
	/*
		if err := v.environment.CheckStatus(
			C.OCIDateSetDate(unsafe.Pointer(&v.dataBytes[pos*sizeof_OCIDate]),
				x.Year(), x.Month(), x.Date()),
			"OCIDateSetDate"); err != nil {
			return err
		}
		return v.environment.CheckStatus(
			C.OCIDateSetTime(unsafe.Pointer(&v.dataBytes[pos*sizeof_OCIDate]),
				x.Hour(), x.Minute(), x.Second()),
			"OCIDateSetTime")
	*/
	C.setDateTime((*C.OCIDate)(v.getHandle(pos)),
		C.sb2(x.Year()), C.ub1(x.Month()), C.ub1(x.Day()),
		C.ub1(x.Hour()), C.ub1(x.Minute()), C.ub1(x.Second()))
	return nil
}
开发者ID:tgulacsi,项目名称:go-sql-test,代码行数:32,代码来源:datetimevar.go

示例6: setPtr

func (bnd *bndStringPtr) setPtr() error {
	if bnd.isNull > C.sb2(-1) {
		// Buffer is padded with Space char (32)
		*bnd.value = stringTrimmed(bnd.buf, 32)
	}
	return nil
}
开发者ID:optimuse,项目名称:ora,代码行数:7,代码来源:bndStringPtr.go

示例7: value

func (def *defIntervalDS) value() (value interface{}, err error) {
	intervalDS := IntervalDS{IsNull: def.null < C.sb2(0)}
	if !intervalDS.IsNull {
		var day C.sb4
		var hour C.sb4
		var minute C.sb4
		var second C.sb4
		var nanosecond C.sb4
		r := C.OCIIntervalGetDaySecond(
			unsafe.Pointer(def.rset.stmt.ses.srv.env.ocienv), //void               *hndl,
			def.rset.stmt.ses.srv.env.ocierr,                 //OCIError           *err,
			&day,            //sb4                *dy,
			&hour,           //sb4                *hr,
			&minute,         //sb4                *mm,
			&second,         //sb4                *ss,
			&nanosecond,     //sb4                *fsec,
			def.ociInterval) //const OCIInterval  *interval );
		if r == C.OCI_ERROR {
			err = def.rset.stmt.ses.srv.env.ociError()
		}
		intervalDS.Day = int32(day)
		intervalDS.Hour = int32(hour)
		intervalDS.Minute = int32(minute)
		intervalDS.Second = int32(second)
		intervalDS.Nanosecond = int32(nanosecond)
	}
	return intervalDS, err
}
开发者ID:optimuse,项目名称:ora,代码行数:28,代码来源:defIntervalDS.go

示例8: value

func (def *defLongRaw) value() (value interface{}, err error) {
	if def.isNullable {
		bytesValue := Raw{IsNull: def.null < C.sb2(0)}
		if !bytesValue.IsNull {
			// Make a slice of length equal to the return length
			bytesValue.Value = make([]byte, def.returnLength)
			// Copy returned data
			copyLength := copy(bytesValue.Value, def.buf)
			if C.ACTUAL_LENGTH_TYPE(copyLength) != def.returnLength {
				return nil, errNew("unable to copy LONG RAW result data from buffer")
			}
		}
		value = bytesValue
	} else {
		// Make a slice of length equal to the return length
		result := make([]byte, def.returnLength)
		// Copy returned data
		copyLength := copy(result, def.buf)
		if C.ACTUAL_LENGTH_TYPE(copyLength) != def.returnLength {
			return nil, errNew("unable to copy LONG RAW result data from buffer")
		}
		value = result
	}
	return value, err
}
开发者ID:optimuse,项目名称:ora,代码行数:25,代码来源:defLongRaw.go

示例9: bind

func (bnd *bndUint16Ptr) bind(value *uint16, position int, stmt *Stmt) error {
	bnd.stmt = stmt
	bnd.value = value
	if value == nil {
		bnd.isNull = C.sb2(-1)
	} else {
		r := C.OCINumberFromInt(
			bnd.stmt.ses.srv.env.ocierr, //OCIError            *err,
			unsafe.Pointer(value),       //const void          *inum,
			2, //uword               inum_length,
			C.OCI_NUMBER_UNSIGNED, //uword               inum_s_flag,
			&bnd.ociNumber)        //OCINumber           *number );
		if r == C.OCI_ERROR {
			return bnd.stmt.ses.srv.env.ociError()
		}
	}
	r := C.OCIBINDBYPOS(
		bnd.stmt.ocistmt,                  //OCIStmt      *stmtp,
		(**C.OCIBind)(&bnd.ocibnd),        //OCIBind      **bindpp,
		bnd.stmt.ses.srv.env.ocierr,       //OCIError     *errhp,
		C.ub4(position),                   //ub4          position,
		unsafe.Pointer(&bnd.ociNumber),    //void         *valuep,
		C.LENGTH_TYPE(C.sizeof_OCINumber), //sb8          value_sz,
		C.SQLT_VNU,                        //ub2          dty,
		unsafe.Pointer(&bnd.isNull),       //void         *indp,
		nil,           //ub2          *alenp,
		nil,           //ub2          *rcodep,
		0,             //ub4          maxarr_len,
		nil,           //ub4          *curelep,
		C.OCI_DEFAULT) //ub4          mode );
	if r == C.OCI_ERROR {
		return bnd.stmt.ses.srv.env.ociError()
	}
	return nil
}
开发者ID:ricsmania,项目名称:ora,代码行数:35,代码来源:bndUint16Ptr.go

示例10: value

func (def *defString) value() (value interface{}, err error) {
	// Buffer is padded with Space char (32)
	if def.isNullable {
		oraStringValue := String{IsNull: def.null < C.sb2(0)}
		if !oraStringValue.IsNull {
			oraStringValue.Value = stringTrimmed(def.buf, 32)
		}
		value = oraStringValue
	} else {
		if def.null < C.sb2(0) {
			value = ""
		} else {
			value = stringTrimmed(def.buf, 32)
		}
	}
	return value, err
}
开发者ID:optimuse,项目名称:ora,代码行数:17,代码来源:defString.go

示例11: setPtr

func (bnd *bndStringPtr) setPtr() error {
	bnd.stmt.logF(_drv.cfg.Log.Stmt.Bind,
		"StringPtr.setPtr isNull=%d alen=%d", bnd.isNull, bnd.alen[0])
	if bnd.isNull > C.sb2(-1) {
		*bnd.value = string(bnd.buf[:bnd.alen[0]])
	}
	return nil
}
开发者ID:ricsmania,项目名称:ora,代码行数:8,代码来源:bndStringPtr.go

示例12: value

func (def *defBool) value() (value interface{}, err error) {
	//Log.Infof("%v.value", def)
	if def.isNullable {
		oraBoolValue := Bool{IsNull: def.null < C.sb2(0)}
		if !oraBoolValue.IsNull {
			r, _ := utf8.DecodeRune(def.buf)
			oraBoolValue.Value = r == def.rset.stmt.cfg.Rset.TrueRune
		}
		return oraBoolValue, nil
	}
	if def.null > C.sb2(-1) {
		r, _ := utf8.DecodeRune(def.buf)
		return r == def.rset.stmt.cfg.Rset.TrueRune, nil
	}
	// NULL is false, too
	return false, nil
}
开发者ID:optimuse,项目名称:ora,代码行数:17,代码来源:defBool.go

示例13: value

func (def *defLob) value() (value interface{}, err error) {
	//lob := def.ociLobLocator
	//Log.Infof("value %p null=%d", lob, def.null)
	if def.gct == Bin {
		if def.null > C.sb2(-1) {
			return def.Reader()
		}
		return value, err
	}
	if def.null < C.sb2(0) {
		return Lob{}, nil
	}
	var r io.Reader
	r, err = def.Reader()
	binValue := Lob{Reader: r}
	//Log.Infof("value %p returns %#v (%v)", lob, binValue, err)
	return binValue, err
}
开发者ID:ricsmania,项目名称:ora,代码行数:18,代码来源:defLob.go

示例14: setPtr

func (bnd *bndBoolPtr) setPtr() error {
	//Log.Infof("%s.setPtr()", bnd)
	if bnd.isNull > C.sb2(-1) {
		r, _ := utf8.DecodeRune(bnd.buf)
		*bnd.value = r == bnd.trueRune
	} else {
		bnd.value = nil
	}
	return nil
}
开发者ID:optimuse,项目名称:ora,代码行数:10,代码来源:bndBoolPtr.go

示例15: bindOra

func (bnd *bndUint64Slice) bindOra(values []Uint64, position int, stmt *Stmt) error {
	uint64Values := make([]uint64, len(values))
	nullInds := make([]C.sb2, len(values))
	for n := range values {
		if values[n].IsNull {
			nullInds[n] = C.sb2(-1)
		} else {
			uint64Values[n] = values[n].Value
		}
	}
	return bnd.bind(uint64Values, nullInds, position, stmt)
}
开发者ID:optimuse,项目名称:ora,代码行数:12,代码来源:bndUint64Slice.go


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