【问题标题】:Finding the type of query executed in perl DBI查找在 perl DBI 中执行的查询类型
【发布时间】:2014-01-25 02:43:18
【问题描述】:

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

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

【问题讨论】:

  • 你的程序充满了错误
  • 祝你好运 ;)

标签: perl dbi


【解决方案1】:

不知道你正在执行什么样的 SQL 对我来说听起来是个坏主意,但这不是你问的,所以......

查看the docs你会发现:

您可以通过检查 if 来判断语句是否为 SELECT 语句 调用execute后$sth->{NUM_OF_FIELDS}大于零。

【讨论】:

  • 会尝试的。有那么严重的问题吗??它是我为自己编写的一些便利代码。
【解决方案2】:

使用正则表达式创建一个小辅助函数来检查查询中特定单词的 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;

【讨论】:

    猜你喜欢
    • 2014-01-28
    • 2011-10-06
    • 1970-01-01
    • 2016-10-31
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    相关资源
    最近更新 更多