查找在perl DBI中执行的查询类型

时间:2014-01-07 12:08:39

标签: perl dbi

在我的perl程序中,我有一个函数,它将查询作为输入并执行它,并打印在查询是select语句时获取的所有行。

但问题是更新或插入语句,其中fetchrow_array给出错误,所以有什么方法我可以知道执行了什么类型的查询,以便我可以跳过获取部分?

2 个答案:

答案 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;