在我的perl程序中,我有一个函数,它将查询作为输入并执行它,并打印在查询是select语句时获取的所有行。
但问题是更新或插入语句,其中fetchrow_array给出错误,所以有什么方法我可以知道执行了什么类型的查询,以便我可以跳过获取部分?
答案 0 :(得分:5)
不知道你正在执行什么类型的SQL听起来对我来说不是一个坏主意,但那不是你问的那样,所以......
检查the docs,您会发现:
通过检查是否可以判断语句是否为SELECT语句 $ sth-> {NUM_OF_FIELDS}在调用execute后大于零。
答案 1 :(得分:0)
使用正则表达式创建一个小帮助函数,以检查查询中特定单词的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;