本文整理汇总了Golang中C.OCIAttrGet函数的典型用法代码示例。如果您正苦于以下问题:Golang OCIAttrGet函数的具体用法?Golang OCIAttrGet怎么用?Golang OCIAttrGet使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了OCIAttrGet函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: NumInput
func (stmt *statement) NumInput() int {
var num C.int
if r := C.OCIAttrGet(stmt.handle, C.OCI_HTYPE_STMT, unsafe.Pointer(&num), nil, C.OCI_ATTR_BIND_COUNT, (*C.OCIError)(stmt.conn.err)); r != C.OCI_SUCCESS {
log.Println(ociGetError(stmt.conn.err))
}
return int(num)
}
示例2: RowsAffected
func (r *result) RowsAffected() (int64, error) {
var t C.ub4
if C.OCIAttrGet(r.stmt.handle, C.OCI_HTYPE_STMT, unsafe.Pointer(&t), nil, C.OCI_ATTR_ROW_COUNT, (*C.OCIError)(r.stmt.conn.err)) != C.OCI_SUCCESS {
return 0, ociGetError(r.stmt.conn.err)
}
return int64(t), nil
}
示例3: setRowCount
// Set the rowcount variable.
func (cur *Cursor) setRowCount() error {
var rowCount, x C.ub4
if cur.statementType == C.OCI_STMT_SELECT {
cur.rowCount = 0
cur.actualRows = -1
cur.rowNum = 0
} else if cur.statementType == C.OCI_STMT_INSERT ||
cur.statementType == C.OCI_STMT_UPDATE ||
cur.statementType == C.OCI_STMT_DELETE {
if CTrace {
ctrace("OCIAttrGet", cur.handle, "HTYPE_STMT", &rowCount, &x,
"ATTR_ROW_COUNT", cur.environment.errorHandle)
}
if err := cur.environment.CheckStatus(
C.OCIAttrGet(unsafe.Pointer(cur.handle),
C.OCI_HTYPE_STMT, unsafe.Pointer(&rowCount), &x,
C.OCI_ATTR_ROW_COUNT, cur.environment.errorHandle),
"SetRowCount"); err != nil {
return err
}
cur.rowCount = int(rowCount)
} else {
cur.rowCount = -1
}
return nil
}
示例4: getStatementType
// getStatementType determines if the cursor is executing a select statement.
func (cur *Cursor) getStatementType() error {
var statementType C.ub2
var vsize C.ub4
if CTrace {
ctrace("getStatementType.OCIAttrGet",
cur.handle, "HTYPE_STMT", &statementType, &vsize,
"ATTR_STMT_TYPE", cur.environment.errorHandle)
}
if err := cur.environment.CheckStatus(
C.OCIAttrGet(unsafe.Pointer(cur.handle), C.OCI_HTYPE_STMT,
unsafe.Pointer(&statementType), &vsize, C.OCI_ATTR_STMT_TYPE,
cur.environment.errorHandle),
"getStatementType"); err != nil {
return err
}
cur.statementType = int(statementType)
if CTrace {
ctrace("statement type is ", cur.statementType)
}
if cur.fetchVariables != nil {
cur.fetchVariables = nil
}
return nil
}
示例5: GetCharacterSetName
// GetCharacterSetName retrieves the IANA character set name for the attribute.
func (env *Environment) GetCharacterSetName(attribute uint32) (string, error) {
//, overrideValue string
var (
charsetID, vsize C.ub4
status C.sword
err error
)
/*
// if override value specified, use it
if (overrideValue) {
*result = PyMem_Malloc(strlen(overrideValue) + 1);
if (!*result)
return -1;
strcpy(*result, overrideValue);
return 0;
}
*/
// get character set id
status = C.OCIAttrGet(unsafe.Pointer(env.handle), //void *trgthndlp
C.OCI_HTYPE_ENV, //ub4 trghndltyp
unsafe.Pointer(&charsetID), //void *attributep
&vsize, //ub4 *sizep
C.ub4(attribute), //ub4 attrtype
env.errorHandle) //OCIError *errhp
if err = env.CheckStatus(status, "GetCharacterSetName[get charset id]"); err != nil {
return "", errgo.Mask(err)
}
charsetName := make([]byte, C.OCI_NLS_MAXBUFSZ)
ianaCharsetName := make([]byte, C.OCI_NLS_MAXBUFSZ)
// get character set name
if err = env.CheckStatus(C.OCINlsCharSetIdToName(unsafe.Pointer(env.handle),
(*C.oratext)(&charsetName[0]),
C.OCI_NLS_MAXBUFSZ, C.ub2(charsetID)),
"GetCharacterSetName[get Oracle charset name]"); err != nil {
return "", errgo.Mask(
// get IANA character set name
err)
}
status = C.OCINlsNameMap(unsafe.Pointer(env.handle),
(*C.oratext)(&ianaCharsetName[0]),
C.OCI_NLS_MAXBUFSZ, (*C.oratext)(&charsetName[0]),
C.OCI_NLS_CS_ORA_TO_IANA)
if err = env.CheckStatus(status, "GetCharacterSetName[translate NLS charset]"); err != nil {
return "", errgo.Mask(
// store results
// oratext = unsigned char
err)
}
return string(ianaCharsetName), nil
}
示例6: Begin
func (conn *OCI8Conn) Begin() (driver.Tx, error) {
if conn.inTx {
return nil, errors.New("transaction already in progress")
}
var txHandle unsafe.Pointer
// determine if a transaction handle was previously allocated
rv := C.OCIAttrGet(
conn.svc,
C.OCI_HTYPE_SVCCTX,
unsafe.Pointer(&txHandle),
nil,
C.OCI_ATTR_TRANS,
(*C.OCIError)(conn.err),
)
if err := conn.check(rv, "OCI8Conn.Begin() find existing transaction handle"); err != nil {
return nil, err
}
if txHandle == nil {
rv := C.OCIHandleAlloc(
conn.env,
&txHandle,
C.OCI_HTYPE_TRANS,
0,
nil,
)
if err := conn.check(rv, "OCI8Conn.Begin() allocate transaction handle"); err != nil {
return nil, err
}
}
rv = C.OCIAttrSet(
conn.svc,
C.OCI_HTYPE_SVCCTX,
txHandle,
0,
C.OCI_ATTR_TRANS,
(*C.OCIError)(conn.err),
)
if err := conn.check(rv, "OCI8Conn.Begin(): associate transaction"); err != nil {
return nil, err
}
rv = C.OCITransStart(
(*C.OCISvcCtx)(conn.svc),
(*C.OCIError)(conn.err),
60,
C.OCI_TRANS_NEW,
)
if err := conn.check(rv, "OCI8Conn.Begin(): start transaction"); err != nil {
return nil, err
}
conn.inTx = true
return conn, nil
}
示例7: getErrorOffset
// Get the error offset on the error object, if applicable.
func (cur *Cursor) getErrorOffset() int {
var offset, x C.ub4
if CTrace {
ctrace("OCIAttrGet", cur.handle, "HTYPE_STMT", &offset, &x,
"ATTR_PARSE_ERROR_OFFSET", cur.environment.errorHandle)
}
C.OCIAttrGet(unsafe.Pointer(cur.handle), C.OCI_HTYPE_STMT,
unsafe.Pointer(&offset), &x,
C.OCI_ATTR_PARSE_ERROR_OFFSET, cur.environment.errorHandle)
return int(offset)
}
示例8: NumInput
func (s *OCI8Stmt) NumInput() int {
var num C.int
C.OCIAttrGet(
s.s,
C.OCI_HTYPE_STMT,
unsafe.Pointer(&num),
nil,
C.OCI_ATTR_BIND_COUNT,
(*C.OCIError)(s.c.err))
return int(num)
}
示例9: attr
// attr gets an attribute from the statement handle. No locking occurs.
func (stmt *Stmt) attr(attrup unsafe.Pointer, attrSize C.ub4, attrType C.ub4) error {
r := C.OCIAttrGet(
unsafe.Pointer(stmt.ocistmt), //const void *trgthndlp,
C.OCI_HTYPE_STMT, //ub4 cfgtrghndltyp,
attrup, //void *attributep,
&attrSize, //ub4 *sizep,
attrType, //ub4 attrtype,
stmt.ses.srv.env.ocierr) //OCIError *errhp );
if r == C.OCI_ERROR {
return stmt.ses.srv.env.ociError()
}
return nil
}
示例10: paramAttr
// paramAttr gets an attribute from the parameter handle.
func (rset *Rset) paramAttr(ocipar *C.OCIParam, attrup unsafe.Pointer, attrSize C.ub4, attrType C.ub4) error {
r := C.OCIAttrGet(
unsafe.Pointer(ocipar), //const void *trgthndlp,
C.OCI_DTYPE_PARAM, //ub4 trghndltyp,
attrup, //void *attributep,
&attrSize, //ub4 *sizep,
attrType, //ub4 attrtype,
rset.stmt.ses.srv.env.ocierr) //OCIError *errhp );
if r == C.OCI_ERROR {
return rset.stmt.ses.srv.env.ociError()
}
return nil
}
示例11: AttrGet
func (env *Environment) AttrGet(parent unsafe.Pointer, parentType, key int,
dst unsafe.Pointer, errText string) (int, error) {
var osize C.ub4
if CTrace {
ctrace("OCIAttrGet", parent, C.ub4(parentType), dst, &osize, C.ub4(key), env.errorHandle)
}
if err := env.CheckStatus(
C.OCIAttrGet(parent, C.ub4(parentType), dst, &osize, C.ub4(key),
env.errorHandle), errText); err != nil {
// log.Printf("error gettint attr: %s", err)
return -1, err
}
return int(osize), nil
}
示例12: RowsAffected
func (r *OCI8Result) RowsAffected() (int64, error) {
var t C.ub4
rv := C.OCIAttrGet(
r.s.s,
C.OCI_HTYPE_STMT,
unsafe.Pointer(&t),
nil,
C.OCI_ATTR_ROW_COUNT,
(*C.OCIError)(r.s.c.err))
if rv == C.OCI_ERROR {
return 0, ociGetError(r.s.c.err)
}
return int64(t), nil
}
示例13: LastInsertId
func (r *OCI8Result) LastInsertId() (int64, error) {
var t C.ub4
rv := C.OCIAttrGet(
r.s.s,
C.OCI_HTYPE_STMT,
unsafe.Pointer(&t),
nil,
C.OCI_ATTR_ROWID,
(*C.OCIError)(r.s.c.err))
if rv == C.OCI_ERROR {
return 0, ociGetError(r.s.c.err, "OCI8Result.LastInsertId")
}
return int64(t), nil
}
示例14: AttrGet
//AttrGet gets the parent's attribute identified by key, and stores it in dst
func (env *Environment) AttrGet(parent unsafe.Pointer, parentType, key int,
dst unsafe.Pointer, errText string) (int, error) {
var osize C.ub4
if CTrace {
ctrace("OCIAttrGet(parent=%p, parentType=%d, dst=%p, osize=%p, key=%d, env=%p)",
parent, C.ub4(parentType), dst, &osize, C.ub4(key), env.errorHandle)
}
if err := env.CheckStatus(
C.OCIAttrGet(parent, C.ub4(parentType), dst, &osize, C.ub4(key),
env.errorHandle), errText); err != nil {
Log.Error("AttrGet", "attr", key, "error", err)
return -1, err
}
return int(osize), nil
}
示例15: performDefine
// Perform the defines for the cursor. At this point it is assumed that the
// statement being executed is in fact a query.
func (cur *Cursor) performDefine() error {
var numParams uint
var x C.ub4 = 0
// determine number of items in select-list
if CTrace {
ctrace("OCIAttrGet", cur.handle, "HTYPE_STMT", &numParams, &x,
"PARAM_COUNT", cur.environment.errorHandle)
}
if err := cur.environment.CheckStatus(
C.OCIAttrGet(unsafe.Pointer(cur.handle),
C.OCI_HTYPE_STMT,
unsafe.Pointer(&numParams), &x,
C.OCI_ATTR_PARAM_COUNT, cur.environment.errorHandle),
"PerformDefine"); err != nil {
return err
}
// debug("performDefine param count = %d", numParams)
// create a list corresponding to the number of items
cur.fetchVariables = make([]*Variable, numParams)
// define a variable for each select-item
var v *Variable
var e error
cur.fetchArraySize = cur.arraySize
for pos := uint(1); pos <= numParams; pos++ {
v, e = cur.varDefine(cur.fetchArraySize, pos)
// debug("varDefine[%d]: %s nil?%s", pos, e, e == nil)
if e != nil {
return fmt.Errorf("error defining variable %d: %s", pos, e)
}
if v == nil {
return fmt.Errorf("empty variable on pos %d!", pos)
}
// debug("var %d=%v", pos, v)
cur.fetchVariables[pos-1] = v
}
// debug("len(cur.fetchVariables)=%d", len(cur.fetchVariables))
return nil
}