【问题标题】:Calling a Sybase stored procedure from another stored procedure从另一个存储过程调用 Sybase 存储过程
【发布时间】:2010-08-31 14:56:32
【问题描述】:

我正在调用一个 Sybase Stored Proc X,它返回由 servlet 使用的数据。

在 Stored Proc X 中,Stored Proc get_business_day 的调用方式如下:

exec get_business_day @CBDate, -1, @prevBusDay 输出

所以,调用它的结果(在 DBArtisan 中)是:

2010 年 6 月 25 日上午 12:00:00.000
1 行受影响。

问题是我在执行 X 时不需要输出上述行,因为我得到的输出(在 DBArtisan 中)是:

2010 年 6 月 25 日上午 12:00:00.000
-2817773441.669999

这显然会影响 servlet 获得的结果,因为它只期望值 -2817773441.669999。

有什么办法可以抑制调用X时出现get_business_day的输出吗?

谢谢 阿尼亚塔

【问题讨论】:

    标签: stored-procedures sybase


    【解决方案1】:

    这是你想要做的:

    主进程:

    ...
    create table #tmp(
        CBDate datetime
    )
    EXEC get_business_day @CBDate, -1
    
    select CBDate from #tmp
    -- use it
    
    drop table #tmp
    -- before end
    

    get_business_day:

    create table #tmp(
        CBDate datetime
    )
    go
    create proc get_business_day
    as
    
    -- find the value to be inserted into @day
    insert into #tmp select @day
    
    go
    
    drop table #tmp
    go
    

    【讨论】:

      【解决方案2】:

      尝试在临时表中捕获结果集,如下所示:

      CREATE TABLE #BadResultSet (DateOf datetime)
      
      INSERT INTO #BadResultSet (DateOf)
      EXEC get_business_day @CBDate, -1, @prevBusDay output
      

      【讨论】:

      • 不起作用...我收到以下消息:20:43:20.546 DBMS -- 编号 (156) 严重性 (15) 状态 (2) 服务器 附近的语法不正确关键字“执行”。
      • 试试这个:How can I get data from a stored procedure into a temp table ?,我没有 sybase 可以实际尝试这些,但我一直这样做(十多年前,所以我不记得了)
      • Thx KM ...我认为根据上述线程在 Sybase 中无法做到这一点。
      • 如果你在get_business_day中把数据放到临时表中,那么你必须在@prevBusDay之后删除“输出”关键字
      猜你喜欢
      • 1970-01-01
      • 2014-09-17
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 2010-11-14
      相关资源
      最近更新 更多