当前位置:首页 » 存储配置 » sybase分页存储过程

sybase分页存储过程

发布时间: 2022-09-01 20:56:59

⑴ Sybase数据库怎么分页,要写存储过程吗

Sybase数据库中的高效分页方法

Sybase使用rank() over(order by id)ret的方式分页,这种方式在数据量达到40W条的时候很耗时,大概5S的时间,当达到千万条的时候,查询一次大概是1分40秒

对于这种方式,瓶颈可能是出在排序部分,当排序的唯一字段是varchar类型的时候更加明显

现在有种新的方式,就是利用rowid。
如:select a.* from table_name a where rowid(a) >=1 and rowid(a)<11

经测试,在同一张表中,1500W的数据量,每次查询时间都在200ms以内
但是这个函数只能用在真实的数据表,无法在临时表中用到;

这个rowid,是在数据插入的时候,数据库给每行数据分配的物理唯一标识,如果要页面中要用到动态排序,这个是不支持的。

⑵ sybase 存储过程

因为你在存储过程中使用的是变量,而没有使用输入参数,如果将你的这个变量声明成输入参数,就可以实现了。create proc data(@username varchar(20)) as . begin ..... end.

⑶ 请教sybase的存储过程中如何实现动态sql

1.EXEC的使用
EXEC命令有两种用法,一种是执行一个存储过程,另一种是执行一个动态的批处理。以下所讲的都是第二种用法。
下面先使用EXEC演示一个例子,代码1
DECLARE @TableName VARCHAR(50),@Sql NVARCHAR (MAX),@OrderID INT;
SET @TableName = 'Orders';
SET @OrderID = 10251;
SET @sql =
'SELECT * FROM '+QUOTENAME(@TableName) +'WHERE OrderID = '+
CAST(@OrderID AS VARCHAR(10))+' ORDER BY ORDERID DESC'
EXEC(@sql);

sp_executesql命令在SQL Server中引入的比EXEC命令晚一些,它主要为重用执行计划提供更好的支持。
为了和EXEC作一个鲜明的对比,我们看看如果用代码1的代码,把EXEC换成sp_executesql,看看是否得到我们所期望的结果
DECLARE @TableName VARCHAR(50),@sql NVARCHAR(MAX),@OrderID INT ,@sql2 NVARCHAR(MAX);
SET @TableName = 'Orders ';
SET @OrderID = 10251;
SET @sql = 'SELECT * FROM '+QUOTENAME(@TableName) + ' WHERE OrderID = '+CAST(@OrderID AS VARCHAR(50)) + ' ORDER BY ORDERID DESC'
EXEC sp_executesql @sql

⑷ sybase数据库是否支持查询分页

sybase不支持分页查询。要想分页查询需自己写存储过程

⑸ 如何查看sybase存储过程的内容

1
在isql(或SQL
Advantage)中执行:
sp_helptext
存储过程名
可以查看存储过程的内容。
2

SQL
CENTRAL里连接你的服务器用sa登录,点击你的用户数据库,展开树就有
Stored
proceres,所有的存储过程就在里面。

linux环境下如何查看sybase数据库中有哪些表有哪些存储过程如何把sybase数据库导出

可以用以下SQL语句查找存储过程:

selectdistinctname
fromsysobjects
wheretype='P'

如何查看SYBASE数据库中的所有表名?看如下SQL语句:

="U";

如何把sybase数据库导出,使用如下:

mpdatabasefromsybase1to"/mysybase.mp";

sybase1是你的数据库名,/mysybase.mp表示linux根目录下,保存为mysybase.mp。

⑺ 如何快速导出SYBASE的存储过程

方法1:使用外部工具; 方法2:自己编写代码 -- 效果、方便性差一些 - 定义游标,对于sys.objects中type='P'的对象(即所有过程),遍历 - 对于每个过程,使用helpText 来得到脚本

⑻ sybase怎么批量导出存储过程

自做一SHELL脚本,
将存储过程名从 sysobjects中选出
然后通过 sp_helptext 导出
获取每个存储过程内容

⑼ sybase存储过程,请问为什么它只执行一个cursor

--解析tableB 这里不会执行,或者只会打印一条记录,正常的应该是遍历所有的记录的。
declare cur_tableB
cursor for
select
vcAreaID areaIDAttach,
round(sum(intSuc)*1.00/count(1),4) attachSucRate,
round(avg(dbTimeLen)*1.00,2) dbTimeLen
from tableB
where 1=1
and dtEndTime>=@sTime
and dtEndTime<@eTime
and intSystemID=3
group by vcAreaID

open cur_tableB
while(@@sqlstatus=0)
begin
fetch cur_tableB into @areaIDAttach,@attachSucRate,@dbTimeLen
print "areaIDAttach=%1!,attachSucRate=%2!,dbTimeLen=%3!",@areaIDAttach,@attachSucRate,@dbTimeLen
end
close cur_tableB

end

⑽ sybase存储过程中怎么调用存储过程

1.begin tran
.....(SQL)
if @@error=0
commit
else
rollback
2.exec 另一个存储过程名 参数...

热点内容
编译原理杂志 发布:2025-01-02 01:37:47 浏览:336
玩cf配置低怎么办 发布:2025-01-02 01:36:23 浏览:888
lol的文件夹 发布:2025-01-02 01:33:12 浏览:421
解压引导 发布:2025-01-02 01:23:25 浏览:654
微信小程序游戏如何设置密码 发布:2025-01-02 01:01:27 浏览:76
php跨域请求 发布:2025-01-02 01:01:24 浏览:785
5复式算法 发布:2025-01-02 01:00:00 浏览:545
androidtts 发布:2025-01-02 00:59:59 浏览:75
监控访问网址 发布:2025-01-02 00:57:15 浏览:333
堡垒机php 发布:2025-01-02 00:56:30 浏览:52