`
bdk82924
  • 浏览: 565029 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Sybase 存储过程(嵌套调用)使用另外一个存储过程的结果集 .

 
阅读更多

转:http://blog.csdn.net/lovcal/article/details/2147570

 

 

/***********************************************
************************************************
Sybase存储过程(嵌套调用)使用另一个存储过程结果集
作者:王衍锋
日期:2008年3月5日
***********************************************
***********************************************/
 
关于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只能接收存储过程返回的第一个结果集。
 
/*******************************************/
改进一:
时间:2008/3/5
作者:王衍锋
描述:为了能够并行执行,将现有表改为临时现有表almsdb.dbo.tt-->#tt
这样存储过程并行执行时就不会发生并发问题
/*******************************************/
改进二:
时间:2008/3/5
作者:王衍锋
描述:
关于存储过程的参数,如何实现包含参数的存储过程。在现有表中使用“_”的列来定义存储过程的参数,这些参数列不会在结果集中出现,但可以查询引用,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存储过程

    Sybase存储过程是Sybase数据库管理系统中的一个重要特性,它允许开发者编写一组预编译的SQL语句和控制流语句,以实现复杂的数据处理逻辑。这些存储过程可以被多次调用,提高了数据库操作的效率,并提供了更好的数据...

    SybaseIQ存储过程学习笔记

    - **原子性**:ATOMIC关键字可确保存储过程作为一个整体执行,不允许COMMIT或ROLLBACK。 6. **存储过程的调试**:Sybase IQ提供了调试工具,如附录C所述,用于在数据库级别调试逻辑。 7. **自定义函数创建**: `...

    Sybase语法大全

    子查询是在主查询内部嵌套的查询,用于提供临时结果集,作为外部查询的一部分使用。 7. **事务处理**: Sybase 支持事务,可以确保数据的一致性和完整性。`BEGIN TRANSACTION`, `COMMIT`, `ROLLBACK` 用于开始、...

    Sybase培训教材

    #### 一、Sybase数据库简介与版本 Sybase数据库,由Mark B. Hiffman和Robert Epstern于1984年创立的Sybase公司开发,首次产品发布是在1987年。Sybase数据库以客户/服务器架构为基础,区别于传统的主/从式模型,将...

    Sybase 12.5各版本新功能完全展示

    ASE 12.5.1 支持SQL派生表,这是一种由嵌套SELECT语句生成的临时结果集,可以在查询中多次使用,提高查询效率。 #### 新增 date 和 time 数据类型 为了更好地支持日期和时间处理,ASE 12.5.1 增加了 date 和 time ...

    超级有影响力霸气的Java面试题大全文档

    Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应...

    2021-2022计算机二级等级考试试题及答案No.5111.docx

    **示例分析**:在递归调用中,每次函数调用都会在栈中分配一个新的存储空间来保存参数和局部变量,因此正确答案是栈。 ### 20. Access数据库表的操作 **知识点说明**:Microsoft Access是一款常用的关系型数据库...

    Oracle 笔记.docx

    - 调用存储过程和函数 - **DAO封装**:数据访问对象模式,提高代码重用性。 以上是根据提供的文档内容整理的核心知识点概览。Oracle及其相关技术覆盖了数据库设计、管理、开发等多个方面,是现代信息系统不可或缺...

    2021-2022计算机二级等级考试试题及答案No.19764.docx

    3. 剪贴板是操作系统提供的一个临时存储区,可以存放各种类型的数据,如文本、图像等。剪切或复制操作都是将数据放入剪贴板。 4. PowerPoint 中,幻灯片的动画效果可以自由选择,不是强制要求的,因此系统不会因未...

    powerbuilder8.0编程百例

    实例可能涉及数据库连接、事务处理、存储过程的调用以及数据同步。 8. **错误处理和调试**:学习如何在PowerBuilder中进行错误处理,设置断点,使用调试器来跟踪和修复程序中的问题。 9. **用户界面设计**:Power...

    猎隼报表控件

    单元格可以是普通的值、表达式、SQL语句,也可以是调用远端数据库系统的存储过程,也可以是声音、图片、二(三)维图表、影片等多媒体信息,也可以是嵌套报表。 ◆规范的二次开发接口 系统提供200多个属性、500多个...

    SQL 的发展历程及其前景

    - **存储过程:** 存储过程是一组预先编写的SQL语句集合,可以被多个应用程序调用。 ### SELECT 语句详解 #### 查询基础 - **基本语法:** ```sql SELECT column_name(s) FROM table_name; ``` - **示例:** ...

    T-sql 官方文档

    - **`@@NESTLEVEL`**: 返回嵌套过程调用的深度。 - **`@@OPTIONS`**: 返回会话选项的值。 - **`@@REMSERVER`**: 返回远程服务器的名称。 - **`@@SERVERNAME`**: 返回当前服务器的名称。 - **`@@SERVICENAME`**: 返回...

Global site tag (gtag.js) - Google Analytics