database - 使用.net sdk和sql查询universe数据库时如何获取页面

标签 database universe u2 unidata u2netdk

我正在使用他们的 .net 驱动程序连接到 Universe 数据库(来自 Rocket 软件)。我想根据每页的用户请求按需获取数据,即分页。我们可以使用其他数据库(偏移获取),但 universe db 似乎不支持它。它不识别关键字偏移量,例如 SELECT NAME, AGE FROM CONTACTS WHERE AGE > 25 offset 5 sample 5 不起作用。我不认识那些关键字,也没有好的文档:-(

注意:虽然传统上是多值数据库,但我用的这个并没有使用多值类型,而是对结构进行了归一化。

最佳答案

这当然是这个平台的缺点之一。我过去曾使用类似于以下子例程的方法来解决这个问题。为了简洁起见,我不得不删除了一堆东西,但是这个编译所以它必须完全没有错误,对吧?

注意事项:您需要在每个要使用它的文件中包含 @SELECT DICT 项,其中包含您要返回的所有列。

多值有点棘手。我已经将使用它的数据展平,所以我没有遇到那个问题,但这不会执行 UNNEST。

此外,您可能还想添加一个值,说明总共有多少条记录,并可能计算出某种 token 传递和列表保存,以减少每次运行查询时执行查询的次数,但这比手头的基本问题。

SUBROUTINE SQLSelectWithOffset(TableName,UVWithClause,Starting,Offset)
***********************************************************************
* PROGRAM ID:     SQLSelectWithOffset
*
* PROGRAM TITLE:  SQLSelectWithOffset
*
* DESCRIPTION:    Universe doesn't support sql commands using starting and offset
*                 which makes life hard when you want all of a file
*                 but you choke on the size. Tokens allow for the selectlist to be saved
*                 TableName = UV FIle to select on. If this is blank program will return the number of records remaining
*                 UVWithClause = Your critera, WITH or BY criteria you want in a sort select. 
*                 Starting = Holds you place in line
*                 Offest = How many records to return 
************************************************************************
  $INCLUDE UNIVERSE.INCLUDE ODBC.H
  RETURN.LIST = ""
  IF Starting = "" or Starting < 1 THEN
     Starting = 1
  END
  GOSUB GET.MASTER.LIST
  FOR X=Starting TO Offset
     ID = EXTRACT(FULL.LIST,X,0,0)
     IF ID = "" THEN CONTINUE
     RETURN.LIST<-1> = ID
  NEXT X
  SELECT RETURN.LIST TO 9
  SQLSTMT ="SELECT * FROM ":TableName:" SLIST 9"
  ST=SQLExecDirect(@HSTMT, SQLSTMT)
RETURN
GET.MASTER.LIST:
  STMT = "SSELECT ":TableName
  IF UVWithClause NE "" THEN
     STMT := " ":UVWithClause
  END
  EXECUTE "CLEARSELECT"
  EXECUTE STMT
  READLIST FULL.LIST ELSE FULL.LIST = ""

RETURN

END

祝你好运,请仅将此信息用于好的目的!

关于database - 使用.net sdk和sql查询universe数据库时如何获取页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44038277/

相关文章:

database - 宇宙数据库 | catalog命令行解析错误

java - 使用 selectMatchingAK 从备用索引获取选择列表会返回 "The RPC failed"错误

universe - 如何使用 TCL 上的 SELECT 从文件中获取最小日期值?

u2 - 如何使用 RetrieVe 或 SQL 查找 UniVerse 中的列列表?

c# - 向 IIS 上传超过 1MB 的数据时连接速度慢

sql - 在 SQL 中保存顺序首选项

mysql - 自定义 nextval 函数内的 mysql bigint 变量声明错误

java - 如何为 UniObjects 设置时区?

database - 为ms access数据库提供安全标准

database - 可以使用哈希算法来节省数据库空间吗?