使用存储过程时fetchrow_array和fetchall_arrayref之间的区别

时间:2016-09-22 15:18:50

标签: sql-server perl stored-procedures dbi

我最近使用两者来获取存储过程的结果。我注意到fetchrow_array返回我在存储过程中选择的行的输出。而fetchall_arrayref返回最后一行中存储过程的状态,以及存储过程中的选定行。

为什么我们有这种差异,是否有办法避免在fetchall_arrayref中获取存储过程的状态?

我的存储过程

    CREATE PROCEDURE [dbo].[check_date_proc]
       @dateStart DATETIME
AS
BEGIN
SELECT
       check_date
FROM
       date_Table

WHERE
       data_date = @dateStart
END;

GO

我称之为

exec check_date_proc '20160920';

fetchrow_array返回

20160920

fetchall_arrayref返回

20160920
0

由于

1 个答案:

答案 0 :(得分:1)

根据您使用的数据库类型(并且取决于Perl DBD驱动程序),您可能会获得多个结果集。

有一种处理多个结果集的方法(例如,如果你执行了两个导致两个结果集的语句;并且你想要两个结果集)。

查看here示例代码。

因为在你的情况下,你想要忽略存储过程的状态,你可能觉得将结果作为哈希(一个拉中的所有行或每个一个一个地获取)都很方便,然后使用获取数据的列的名称。