【发布时间】:2014-01-25 02:43:18
【问题描述】:
在我的 perl 程序中,我有一个函数,它将查询作为输入并执行它,如果查询是 select 语句,则打印获取的任何行。
但问题在于更新或插入语句,其中 fetchrow_array 给出错误,所以有什么方法可以知道执行了哪种类型的查询,以便我可以跳过提取部分?
【问题讨论】:
-
你的程序充满了错误
-
祝你好运 ;)
在我的 perl 程序中,我有一个函数,它将查询作为输入并执行它,如果查询是 select 语句,则打印获取的任何行。
但问题在于更新或插入语句,其中 fetchrow_array 给出错误,所以有什么方法可以知道执行了哪种类型的查询,以便我可以跳过提取部分?
【问题讨论】:
不知道你正在执行什么样的 SQL 对我来说听起来是个坏主意,但这不是你问的,所以......
查看the docs你会发现:
您可以通过检查 if 来判断语句是否为 SELECT 语句 调用execute后$sth->{NUM_OF_FIELDS}大于零。
【讨论】:
使用正则表达式创建一个小辅助函数来检查查询中特定单词的 SQL 字符串...
my $sql = "UPDATE some_table SET some_value = 'abc' WHERE some_value = 'xyz'";
sub get_query_type
{
my $sql_string = shift;
my $query_type;
if( $sql_string =~ m/^UPDATE/i )
{
$query_type = "An UPDATE query";
# do UPDATE stuff
}
elsif( $sql_string =~ m/^INSERT/i )
{
$query_type = "An INSERT query";
# do INSERT stuff
}
# more blocks here as needed.
return $query_type;
}
my $type = get_query_type( $sql );
print $type;
【讨论】: