| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /*
- * Copyright (c) 2000-2018, 达梦数据库有限公司.
- * All rights reserved.
- */
- package dm
- import (
- "database/sql"
- "database/sql/driver"
- )
- var SQLName sqlName
- type sqlName struct {
- m_name string // 描述对象自身名称,
- // 若为内置类型,则表示数据库端定义的名称,与dType相对应
- m_pkgName string // 所在包的名称,适用于包中类型的定义
- m_schName string // 描述对象所在模式名
- m_fulName string // 描述对象完全限定名, 记录用户发送的名称信息;
- // 以及接受服务器响应后,拼成的名称信息
- m_schId int // 保存模式id,模式名无法传出,利用模式id查找
- m_packId int // 保存包的id,包名无法传出,用于查找包名
- m_conn *DmConnection
- }
- func (SqlName *sqlName) init() {
- SqlName.m_name = ""
- SqlName.m_pkgName = ""
- SqlName.m_schName = ""
- SqlName.m_fulName = ""
- SqlName.m_schId = -1
- SqlName.m_packId = -1
- SqlName.m_conn = nil
- }
- func newSqlNameByFulName(fulName string) *sqlName {
- o := new(sqlName)
- o.init()
- o.m_fulName = fulName
- return o
- }
- func newSqlNameByConn(conn *DmConnection) *sqlName {
- o := new(sqlName)
- o.init()
- o.m_conn = conn
- return o
- }
- func (SqlName *sqlName) getFulName() (string, error) {
- // 说明非内嵌式数据类型名称描述信息传入或已经获取过描述信息
- if len(SqlName.m_fulName) > 0 {
- return SqlName.m_fulName, nil
- }
- // 内嵌式数据类型无名称描述信息返回,直接返回null
- if SqlName.m_name == "" {
- // DBError.throwUnsupportedSQLException();
- return "", nil
- }
- // 其他数据名描述信息
- if SqlName.m_packId != 0 || SqlName.m_schId != 0 {
- query := "SELECT NAME INTO ? FROM SYS.SYSOBJECTS WHERE ID=?"
- params := make([]driver.Value, 2)
- var v string
- params[0] = sql.Out{Dest: &v}
- if SqlName.m_packId != 0 {
- params[1] = SqlName.m_packId
- } else {
- params[1] = SqlName.m_schId
- }
- rs, err := SqlName.m_conn.query(query, params)
- if err != nil {
- return "", err
- }
- rs.close()
- // 说明是包中定义的对象
- if SqlName.m_packId != 0 {
- // pkg全名
- SqlName.m_pkgName = v
- SqlName.m_fulName = SqlName.m_pkgName + "." + SqlName.m_name
- } else {
- // 非包中定义的对象
- // schema 名称
- SqlName.m_schName = v
- SqlName.m_fulName = SqlName.m_schName + "." + SqlName.m_name
- }
- }
- // 将有效值返回
- if len(SqlName.m_fulName) > 0 {
- return SqlName.m_fulName, nil
- } else {
- return SqlName.m_name, nil
- }
- }
|