Mysql入门系列:Perl DBI基础(2)
2006-12-31 10:49:46 来源:WEB开发网核心提示: SELECT 语句只返回一行,所以不需要循环;我们只调用fetchrow_array( ) 一次,Mysql入门系列:Perl DBI基础(2)(2),另外,因为我们只选择一列,可能以任意的次序提取行来改变与所问问题有关的总统的次序,要想任意地提取一行,所以甚至不需要将返回值分配给数组,当
SELECT 语句只返回一行,所以不需要循环;我们只调用fetchrow_array( ) 一次。另外,因为我们只选择一列,所以甚至不需要将返回值分配给数组。当在标量环境中(单个值而不是所期望的一列)调用fetchrow_array( ) 时,它返回这个行的第一列,如果没有更多的有效行,则返回un d e f。
另一种期望最多有一个记录的查询是一个含有LIMIT 1来约束返回的行数的查询。其一般的用法是返回特定列含有最大或最小值的行。例如,下面的查询给出最近出生的总统姓名和出生日期:
必须无提取循环的其他类型的查询利用MAX( ) 或MIN( ) 来选择单个值。但是在所有这些情况下,获得单个行结果的一种更容易的方法就是使用数据库句柄方法selectrow_array( ),它结合了prepare( )、execute( ) 并在单个调用中提取行。它返回一个数组(而不是一个引用),如果出现错误,则返回一个空数组。前一例子可利用selectrow_array( ) 编写如下:
4. 处理完整的结果集
在使用提取循环时, DBI 不提供在结果集中随意查找的方法,或以任何次序而不是以循环返回的次序来处理行。同样,提取行以后,如果没有保存,前一行会丢失。这种做法并不一定合适以下情况:
以非连续的次序处理行。考虑一种情况,想以历史同盟的president 表中列出的美国总统为主体,进行一些测验。如果希望每次测验时都以不同的次序提出问题,则可以从president 表中选择所有行。然后,可能以任意的次序提取行来改变与所问问题有关的总统的次序。要想任意地提取一行,就必须同时访问所有的行。
更多精彩
赞助商链接