2016-07-28 5 views
5

मैंने डेटाबेस तालिका से डेटा हटाने के लिए एक नमूना पर्ल प्रोग्राम लिखा है।डीबीआई "निष्पादन" विधि के वापसी मूल्य के लिए मुझे 0E0 क्यों मिल रहा है?

इस कोड मैं लिखा है, मैं मार डाला है, तो यह ऊपर सफल संदेश और फिर हटा दिया पंक्तियों की संख्या प्रिंट चाहिए

use DBI; 

my $dbh = DBI->connect("DBI:Pg:host=192.168.12.23;port=5432;", "adhi");                     
if ($dbh) { 

    print "Connected successfully\n"; 

    my $exe = $dbh->prepare("delete from perl_test.test"); 
    my $res = $exe->execute(); 
    if ($res) { 
     print "deleted the table successfully of rows: $res\n"; 
    } 
} 

यदि तालिका खाली थी तो 0 के बजाय 0E0 प्रिंट कर रहा था। मुझे नहीं पता कि यह इस तरह के मूल्य को वापस कैसे कर रहा है?

क्या कोई मुझे बता सकता है कि यह कैसे काम कर रहा था?

+1

आपने लिखा * "इसमें मैंने क्वेरी निष्पादित करने के लिए 'do' विधि का उपयोग किया है" * लेकिन आपका प्रोग्राम * 'do' विधि का उपयोग नहीं करता है इसलिए मैंने उस वाक्य को हटा दिया। कृपया अपने पर्ल कोड को सही तरीके से इंडेंट करें ताकि यह पठनीय हो, विशेष रूप से इसके साथ मदद मांगने से पहले। – Borodin

+0

धन्यवाद Borodin .मैं इसे बदल दूंगा। –

उत्तर

9

यह जांचने की अनुमति देने के लिए किया जाता है कि ऑपरेशन सफल हुआ था या नहीं। कारण यह है कि '0E0' (एक स्ट्रिंग के रूप में) एक वास्तविक मान है, लेकिन 0 पर्ल में एक झूठा मान है। इसलिए:

  1. आप वापसी मान if में, यह निर्धारित करने के आपरेशन सफल रहा था (सच सफलता का मतलब है)

  2. परीक्षण कर सकते हैं लेकिन आप यह भी सही पता करने के लिए एक संख्या के रूप वापसी मान का उपयोग कर सकते हटाई गई पंक्तियों की संख्या, क्योंकि 0E0 0 के रूप में उपयोग किए जाने पर मूल्यांकन करता है।

तुम सिर्फ नष्ट कर दिया पंक्तियों की संख्या की जरूरत है, तो आप $res + 0 या $res * 1 उपयोग कर सकते हैं। लेकिन केवल परीक्षण के बाद कि ऑपरेशन सफल रहा था।

संबंधित मुद्दे