sybase - 过程 returns 上一个结果集

sybase - procedure returns previous result set

我有一个包含 2 selects 的程序,看起来像这样...

PROCEDURE getRec
  @pId INTEGER
AS
BEGIN
  SELECT 'anything'

  SELECT id, name
  FROM my_table
  WHERE id = @pId
END

当我的 perl 脚本调用这个存储过程时,如果 my_table 有一个匹配的记录就会显示出来。但是,如果传入的 ID 没有匹配项,则存储过程 returns 'anything'.

如果第二个 select 中没有行,那么我只希望过程 return 一个空结果集。我怎样才能做到这一点?

每个 SELECT 都会产生一个结果集(SELECT @var = ...除外)

因此将首先收到 'anything' 结果集

之后,您将收到空结果集。

您需要让您的 perl 代码获取第一个结果集中的所有行,然后获取下一个结果集并获取该结果集中的所有行。

获取下一个结果集的函数将在很大程度上取决于您使用的 perl 库。