在dbutils.pm文件中我們在此聲明得到錯誤像使用不能調用方法未定義的值的perl編寫
my $sth = $dbh->prepare($checkUser) or return ($::FALSE,"checkUser prepare failed ");
不能調用方法未定義的值使用相同的語句準備在這個文件中多次,但我沒有得到任何這樣的錯誤。 prepare($ checkUser) - > checkUser是SQL查詢並返回一些東西。查詢它的返回值沒有問題。
我們正在使用sub dbLogin { }
函數。在這個函數中,我們已經給:
$dbh = DBI->connect('DBI:Oracle:DBname', 'username', 'pwd')
or die "Couldn't connect to database: " . DBI->errstr;
而這個功能是我們已經使用返回$dbh
所以根據您的建議,即行$dbh
代碼。
什麼是dbh返回的結果,我們在dbUtil.pm文件中多次使用&個地方。
請建議我解決此問題。
您添加的細節完全沒有改變這種情況。問題在於,當你使用它調用'prepare()'時,$ dbh'未定義。你需要弄清楚爲什麼它沒有在你的程序中設置。 –
我們調用子dbLogin()函數,每次調用prepare() like my $ dbh =&dbLogin; my $ sth = $ dbh-> prepare($ checkUser)或return($ :: FALSE,「checkUser prepare failed」);. –
然後'dbLogin()'由於某種原因返回一個未定義的值。你需要弄清楚爲什麼。而且,請不要用'&'調用子程序。這可能會讓人困惑,而且二十多年來一直不被要求。 –