我在我的SQL SELECT語句中遇到了OR語句問題。在Oracle SQL中使用OR語句
######################### Open File and Split The Data Into An Array ####################################
$input_data_file = '/var/www/html/JG/TG/tower_gather.txt';
open (DAT, $input_data_file)
or die ("Could not open file!");
@raw_data = <DAT>;
close(DAT);
#########################################################################################################
$dbh_source2 = DBI->connect("dbi:Oracle:host=<ip-address>;port=<port-number>;sid=<sid>",'username','password');
$SEL = "SELECT DISTINCT SITE_NAME, SITEID, PE_DOWNLINK_PORT FROM CBHME.SERVICE_TOPOLOGY_VIEW WHERE LOWER(PE_FQDN) = ? OR PE_OSPF_LOOPBACK_IP = ?";
$fqdn = $q->param('PE_FQDN');
$sth = $dbh_source2->prepare($SEL);
print '<table border=1>';
print '<tr>';
print '<th>SUR FQDN</th>';
print '<th>Tower Name</th>';
print '<th>Site ID</th>';
print '<th>SUR Link</th>';
print '</tr>';
foreach my $data_line (@raw_data) {
chomp $data_line;
$sth->execute($data_line);
while (my @row = $sth->fetchrow_array) {
#Print data into cells#
print "<tr>";
print "<td>$data_line</td>";
foreach (@row) {
print "<td>$_</td>";
}
print "</tr>";
#print "<$data_line>\t @row\n";
}
}
print "</table>";
END {
$dbh_source2->disconnect if defined($dbh_source2);
}
〜
The error:
[[email protected] cgi-bin]$ ./tower_gather_script.cgi
DBD::Oracle::st execute failed: called with 1 bind variables when 2 are needed [for Statement "SELECT DISTINCT SITE_NAME, SITEID, PE_DOWNLINK_PORT FROM CBHME.SERVICE_TOPOLOGY_VIEW WHERE LOWER(PE_FQDN) = ? OR PE_OSPF_LOOPBACK_IP = ?" with ParamValues: :p1=undef, :p2=undef] at ./tower_gather_script.cgi line 33.
DBD::Oracle::st fetchrow_array failed: ERROR no statement executing (perhaps you need to call execute first) [for Statement "SELECT DISTINCT SITE_NAME, SITEID, PE_DOWNLINK_PORT FROM CBHME.SERVICE_TOPOLOGY_VIEW WHERE LOWER(PE_FQDN) = ? OR PE_OSPF_LOOPBACK_IP = ?" with ParamValues: :p1=undef, :p2=undef] at ./tower_gather_script.cgi line 35.
<table border=1><tr><th>SUR FQDN</th><th>Tower Name</th><th>Site ID</th><th>SUR Link</th></tr></table>[[email protected] cgi-bin]$
所以,我希望它能夠做到:
我在其中一個用戶通過的線進入FQDN或IP地址行的文本區域設備並進入Oracle數據庫並獲取某些信息。
SELECT語句試圖根據用戶輸入的內容(IP或FQDN)獲取該信息。
謝謝
你是什麼意思的「不工作」? (這是一個Oracle SQL問題,而不是perl問題)。 – geoffspear
Perl「或」語句在哪裏?我認爲你指的是SQL語句中的「OR」運算符。 「OR語句在這種情況下不起作用」是什麼意思?你能舉一個你期望輸出什麼樣的例子嗎?另外,還要說明如何設置查詢的參數以及如何執行查詢。 –
基本上它沒有在SQL SELECT中使用OR語句: 它沒有輸出。我正在根據用戶輸入查詢FQDN或IP地址的數據庫 – jmg0880