我大出血了200分---急待答案---谢谢(200分)

  • 主题发起人 主题发起人 judaism
  • 开始时间 开始时间
J

judaism

Unregistered / Unconfirmed
GUEST, unregistred user!
如何从远程sybase数据库的表中查出十条记录
放在数组中,要尽量节省资源,因为访问远程数据库
是按流量计费的


谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢!!!!
 
对sybase 不懂。但和其他的应该没有什么不同。
看看李为的书,里面有很多例子。而且特别提到了如何减少网络流量。
 
<DELPHI 5.X 分布式多层应用 系统篇>
 
按李维的书,最简单的方法是先向服务器提出一个SQL申请,然后由服务器查询得到结果
再将数据分批送回服务器,其中最主要的是应避免服务器数据直接进入终端。
 
sql server中是这样做的,sybase可能也差不多吧。
SET ROWCOUNT (T-SQL)
Causes Microsoft? SQL Server? to stop processing the query after the specified number of rows are returned.

Syntax
SET ROWCOUNT {number | @number_var}

Arguments
number | @number_var
Is the number (an integer) of rows to be processed before stopping the given query.
Remarks
It is recommended that DELETE, INSERT, and UPDATE statements currently using SET ROWCOUNT be rewritten to use the TOP syntax. For more information, see DELETE, INSERT, or UPDATE.

To turn this option off (so that all rows are returned), specify SET ROWCOUNT 0.


--------------------------------------------------------------------------------

Note Setting the SET ROWCOUNT option causes most Transact-SQL statements to stop processing when they have each affected by the specified number of rows. This includes triggers and data modification statements such as INSERT, UPDATE, and DELETE. The ROWCOUNT option has no effect on dynamic cursors, but it limits the rowset of keyset and insensitive cursors. This option should be used with caution and primarily with the SELECT statement.


--------------------------------------------------------------------------------

SET ROWCOUNT overrides the SELECT statement TOP keyword if the rowcount is the smaller value.

The setting of SET ROWCOUNT is set at execute or run time and not at parse time.

Permissions
SET ROWCOUNT permissions default to all users.

Examples
SET ROWCOUNT stops processing after the specified number of rows. In this example, note that x rows meet the criteria of advances less than or equal to $5,000; however, from the number of rows returned by the update, you can see that not all rows were processed. ROWCOUNT affects all Transact-SQL statements.

USE pubs

GO

SELECT count(*) AS Cnt

FROM titles

WHERE advance >= 5000

GO



Here is the result set:

Cnt
-----------
11

(1 row(s) affected)



Now, set ROWCOUNT to 4 and update all rows with an advance of $5,000 or more.

-- SET ROWCOUNT to 4.

SET ROWCOUNT 4

GO

UPDATE titles

SET advance = 5000

WHERE advance >= 5000

GO



Here is the result set:

The command(s) completed successfully.



See Also
 
在存储过程中,
把查到的每条记录放到数组里,用类似sql server的游标来遍历从1到10的记录
我也不会sybase:(
 
只返回一定条数纪录的指令其实在ANSI SQL里都是没有的,
每个厂家的好像有所不同,如mssql好像是top,sybase就不知道了。
 
主要是节省资源,那么可以自己定义一套查找数据的命令,
在服务端安装一个中间件来处理客户端的命令,取得数据,压缩打包,再传回客户端。
 
sql server是set rowcount 只返回多少条记录
oracle 是rowno还是什么的了可以只返回多少条记录
 
我记得这个问题讨论过的,有人用嵌套的 Select 实现过,但是结果不知如何。
找一下吧。
 
我想,不管你怎么查,你都得让服务器返回十条记录,你可以在query中进行,查询到结果
以后立即将所有数据保存到数组中,然后关闭query,这样你的整个网络流量并没有增加。
关键是怎样写sql查询语句使得只返回十条记录。sybase我没有用过,sql server中是使用
top 10 字段列表 的方式。
还有,为了减少网络流量,你最好只选中你需要的字段,如果只是需要字段中的某些内容
最好在查询语句中使用字符串函数截取。sql server中可以使用substring(字段,x,y)的方式
 
judaism:如果还想接着讨论请定期提前自己的帖子,如果不想继续讨论请结束帖子。
 
多人接受答案了。
 
后退
顶部