【发布时间】:2016-09-22 15:18:50
【问题描述】:
我最近使用两者来获取存储过程的结果。我注意到 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
谢谢
【问题讨论】:
-
您能否举例说明您正在执行的查询以及输出的内容?它可能会帮助其他人在谷歌上寻找解决方案。
-
fetchrow_array只返回一行(因此得名)。如果你这样做会发生什么while (my @row = $sth->fetchrow_array) { print "@row\n"; } -
我在做
while (my @aData = $rQuery->fetchrow_array()) { print $rOutputHandler join(',',@aData)."\n"; } -
您使用的是哪个数据库?尝试以哈希的形式获取行(因为存储过程的状态必然会使用与行的列名不同的键)。
标签: sql-server perl stored-procedures dbi