代码拉取完成,页面将自动刷新
package orago
import "gitee.com/wlhet/orago/network"
type RefCursor struct {
defaultStmt
len uint8
MaxRowSize int
parent *defaultStmt
}
func (cursor *RefCursor) load() error {
// initialize ref cursor object
cursor.text = ""
cursor._hasLONG = false
cursor._hasBLOB = false
cursor._hasReturnClause = false
cursor.disableCompression = true
cursor.arrayBindCount = 1
cursor.scnForSnapshot = make([]int, 2)
cursor.stmtType = SELECT
session := cursor.connection.session
var err error
cursor.len, err = session.GetByte()
if err != nil {
return err
}
cursor.MaxRowSize, err = session.GetInt(4, true, true)
if err != nil {
return err
}
columnCount, err := session.GetInt(4, true, true)
if err != nil {
return err
}
if columnCount > 0 {
cursor.columns = make([]ParameterInfo, columnCount)
_, err = session.GetByte()
if err != nil {
return err
}
for x := 0; x < len(cursor.columns); x++ {
err = cursor.columns[x].load(cursor.connection)
if err != nil {
return err
}
}
}
_, err = session.GetDlc()
if err != nil {
return err
}
if session.TTCVersion >= 3 {
_, err = session.GetInt(4, true, true)
if err != nil {
return err
}
_, err = session.GetInt(4, true, true)
if err != nil {
return err
}
}
if session.TTCVersion >= 4 {
_, err = session.GetInt(4, true, true)
if err != nil {
return err
}
_, err = session.GetInt(4, true, true)
if err != nil {
return err
}
}
if session.TTCVersion >= 5 {
_, err = session.GetDlc()
if err != nil {
return err
}
}
cursor.cursorID, err = session.GetInt(4, true, true)
if err != nil {
return err
}
_, err = session.GetInt(2, true, true)
if err != nil {
return err
}
return nil
}
func (cursor *RefCursor) getExeOptions() int {
return 0x8040
}
func (cursor *RefCursor) Query() (*DataSet, error) {
if cursor.connection.State != Opened {
return nil, &network.OracleError{ErrCode: 6413, ErrMsg: "ORA-06413: Connection not open"}
}
cursor.connection.connOption.Tracer.Printf("Query RefCursor: %d", cursor.cursorID)
cursor._noOfRowsToFetch = cursor.connection.connOption.PrefetchRows
cursor._hasMoreRows = true
if len(cursor.parent.scnForSnapshot) > 0 {
copy(cursor.scnForSnapshot, cursor.parent.scnForSnapshot)
}
session := cursor.connection.session
session.ResetBuffer()
err := cursor.write()
if err != nil {
return nil, err
}
dataSet := new(DataSet)
err = cursor.read(dataSet)
if err != nil {
return nil, err
}
return dataSet, nil
}
func (cursor *RefCursor) write() error {
err := cursor.basicWrite(cursor.getExeOptions(), false, false)
if err != nil {
return err
}
return cursor.connection.session.Write()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。