网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > 数据库 > Sybase教程
数据库:数据库教程,数据库技巧,Oracle教程,MySQL教程,Sybase教程,Access教程,DB2教程,数据库安全,数据库文摘
本月文章推荐
.SYBASE到ORACLE连接服务器的实现.
.Sybase公司被评为全球“最佳雇主.
.Sybase与菲奈特联手推出移动BI解.
.Sybase邹作基获选2007中国软件十.
.用Sybase advantage清除melinets.
.Sybase客户中国农业银行喜获"CHP.
.用一个实际案例讲解Sybase数据库.
.安装Sybase后新建server时遇到的.
.图文讲解安装Sybase 11.9.2的具体.
.四大数据库的比较(SQL Server、.
.Sybase公司2008年第二季总收入同.
.教你快速掌握Sybase整库复制的具.
.Sybase程序设计中极易造成误解的.
.常见数据库系统之比较 - SYBASE .
.讲解Sybase在unix系统环境下的安.
.讲解修改Sybase数据库sa密码的实.
.Sybase数据库SQL语句REPLACE的对.
.Sybase数据库荣获2008产品服务满.
.详细讲解Sybase数据库乱码问题的.
.2008年第一季度Sybase业绩增长势.

使用Sybase数据库的现有表实现应用方法

发表日期:2008-6-25


关于Sybase ASE中存储过程嵌套调用,特别是主存储过程要使用子存储过程返回的结果集的情况,由于Sybase 中不支持T-SQL 中的行集函数openrowset和opendatasource两种方法,而且,目前版本(Sybase 12.5)不支持用户自定义函数,因此,给引用被调用子存储过程返回的结果集造成了很大的不方便性。这里介绍使用Sybase“现有表”来实现应用方法。

例子:

首先建立一个存储过程p_Test,返回一个结果集

create procedure p_Test

@RCNID char(10)

as

begin

select RCNID,RCNDTE,NODENAM from JK_RCNNODE WHERE RCNID=@RCNID

return

end

再建立一个存储过程,对p_Test存储过程进行嵌套调用,使用p_Test返回的结果集

Create procedure p_Main

as

begin

create existing table almsdb.dbo.tt /*为要调用的存储过程建立现有表*/

(RCNID char(10) null,

RCNDTE char(10) null,

NODENAM varchar(100) null,

_RCNID char(10) null

)

external procedure

at 'local.almsdb.dbo.p_Test '

select * from tt where RCNID='0000011312' /*使用现有表--存储过程返回的记录集*/

drop table tt

return

end

注释:

almsdb.dbo.tt: 数据库名.拥有者.表名(其实是一个视图名称--只读)

local :Sybase ASE 数据库服务器名称(也可以是远程链接数据库服务器名)

建立方法:

sp_addserver 'local', null, '10.232.27.147:4100'

sp_addexternlogin 'local', 'almsdbo', 'almsdbo', 'almsalms'

注意上面两个系统存储过程的执行需要dbo的操作权限,由数据库管理员配制好就可使用。

现有表almsdb.dbo.tt的定义与存储过程返回的结果集相对应,包括数据类型、长度/精确度、小数点后的位数(scale)以及 null/not null 等特征。

现有表almsdb.dbo.tt只能接收存储过程返回的第一个结果集。

/*******************************************/

改进一:

描述:为了能够并行执行,将现有表改为临时现有表almsdb.dbo.tt-->#tt

这样存储过程并行执行时就不会发生并发问题

/*******************************************/

改进二:

描述:

关于存储过程的参数,如何实现包含参数的存储过程。在现有表中使用“_”的列来定义存储过程的参数,这些参数列不会在结果集中出现,但可以查询引用,CIS将通过名为@+列名的参数将搜索自变量传递到存储过程中。

/********************************************/

即将上面p_Main过程更改为:

create existing table #tt

(RCNID char(10) null,

RCNDTE char(10) null,

NODENAM varchar(100) null,

_RCNID char(10) null

)

external procedure

at 'local.almsdb.dbo.p_Test '

select * from #tt where RCNID='0000011312'

drop table #tt

上一篇:Sybase数据库荣获2008产品服务满意度金奖 人气:970
下一篇:Sybase公司被评为全球“最佳雇主企业” 人气:885
浏览全部Sybase的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐