我是非常新的perl(但來自c#背景),我試圖將一些腳本移動到一個窗口框。 由於某些模塊無法輕鬆使用Windows,因此我改變了連接到數據庫的方式。 我有一個sqlserver數據庫,我有一個循環讀取表中的每一行,然後在此循環內發送另一個查詢來選擇不同的信息。 我是兩個語句不能同時在同一個連接中執行的錯誤。 由於我的連接對象是全球性的我看不到一個簡單的辦法解決這,所以決定將第一組數據存儲在數組中使用:Perl -DBI selectall_arrayref當查詢得到不哈希引用
my $query = shift;
my $aryref = $dbh->selectall_arrayref($query) || die "Could not select to array\n";
return($aryref);
(這是在被稱爲模塊文件)
我然後做一個foreach循環(其中@ $ s_study是$ aryref以上恢復)
foreach my $r_study (@$s_study) {
~~~
my $surveyId=$r_study->{surveyid}; <-------error this line
~~~~
};
當我運行此我得到一個錯誤「不是一個散列引用」。我不明白?! 任何人都可以幫忙!
貝克斯
啊..有無論如何我可以通過名稱查詢列?我需要「數據集」離線... – Bex 2010-10-05 11:29:31
如果你想要一個hashref,你應該可以調用'selectall_hashref'。查看這裏的完整文檔:http://search.cpan.org/~timb/DBI/DBI.pm#selectall_hashref – dsolimano 2010-10-05 12:29:20
selectall_hashref返回哈希引用的哈希引用。 Bex想要一個哈希引用的數組ref。所以selectall_arrayref是正確的方法 - 但增加了{Slice => {}}。 – 2010-10-05 12:39:26