2014-01-07 37 views
0

在我的perl程序中,我有一個函數,它接受查詢作爲輸入並執行它,並打印查詢的所有行,如果查詢是select語句。查找在perl DBI中執行的查詢的類型

但問題是更新或插入語句,其中fetchrow_array給出了一個錯誤,所以有什麼辦法我可以知道什麼類型的查詢被執行,以便我可以跳過提取部分?

+1

你的程序是充滿了錯誤 –

+0

的你怎麼知道 – tejas

+0

好運與此;) – tejas

回答

5

不知道什麼樣的SQL您要執行聽起來像一個壞主意給我,但是這不是你問,所以...

檢查the docs,你會發現:

你可以通過在調用execute之後檢查 $ sth - > {NUM_OF_FIELDS}是否大於零來判斷語句是否爲SELECT語句。

+0

將嘗試。這是不是一個問題?它是我爲自己寫的一些便利代碼。 – tejas

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;