理解Perl引用和解引用之间的概念,通过数据库查询返回值来解答

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28847617/article/details/84147049

package result_ff;
use DBI;
use strict;
my $host="localhost";  #########远程数据库的IP(现在的版本服务器IP地址可以被丢弃)
my $dbsid="*****";#### 关键点:连接本地数据库或者是远程服务器上的数据库,都是用本地客户端的tnsnames.ora监听配置文件决定,不同的连接字符串代表着连接不同的数据库,所以就不需要指定服务器的IP地址(但是本地必须是要有oracle客户端,然后配置tnsnames.ora才可以)
my $dbuser="****";
my $dbpasswd="****";

sub ff_status
{    
my ($sql_text)=@_;
my $dbcon = DBI->connect("DBI:Oracle:$dbsid",$dbuser,$dbpasswd,{AutoCommit=>1}) || die "cannot connect to Oracle:$!\n";  ########### 可以连接本地数据库,声明自动提交事务                              
my $execsql=$dbcon->prepare($sql_text);
$execsql->execute;
#####my $rows_ref=$execsql->fetchrow_arrayref;####只是取一行数组作为引用变量返回。
my @duowei_ref=();
while(my @rows_ref=$execsql->fetchrow_array)  ####数据库返回多行数据原本就是一种二维数据结构。可以理解为引用值就是数据库的rowid,一行一个ID,一个ID又是封装成一个数组列表
{    
push(@duowei_ref,\@rows_ref)  ####把每一行的数组都封装成一个引用单数变量,便于返回值    
}

$execsql->finish();
$dbcon->disconnect();
return \@duowei_ref;####数组转换成引用单数变量
}

my $rows_ref=&ff_status("select id,nename from yn_city");###返回值为:ARRAY(0x2fe5d08)  返回的是一位数组结构
print "函数方法返回值为:$rows_ref\n";

####SCALAR(0x7836d0)表示标量引用
####ARRAY(0x2af6078)表示数组引用

my @jie_ref=@{$rows_ref};   ####返回多行(多维)行号引用ID,没有需要再解析这些引用变量。来获取每一行的数据
print "多行数组结构:@jie_ref"; 
my $row_hao=1;

foreach my $row_no_ref(@jie_ref)
{
my @row_data=@{$row_no_ref};
print "第$row_hao行数据信息:@row_data\n";
$row_hao+=1;
}

1;

结果返回值output:

函数方法返回值为:ARRAY(0x2b64a58)
多行数组结构:ARRAY(0x2b64a10) ARRAY(0x2f5ed98) ARRAY(0x2f5edf8) ARRAY(0x2f5ee58) ARRAY(0x2f5eeb8) ARRAY(0x2f5ef18)第1行数据信息:6 你好
第2行数据信息:6 你好
第3行数据信息:6 你好
第4行数据信息:2 你好
第5行数据信息:2 你好
第6行数据信息:6 你好

猜你喜欢

转载自blog.csdn.net/qq_28847617/article/details/84147049
今日推荐