你需要有資料庫的用戶名和密碼
use DBI;
$DSN = 'driver={SQL Server};Server=資料庫名; Database=表名;UID=用戶名;PWD=密碼;';
$dbh = DBI->connect("dbi:ODBC:$DSN",{'RaiseError' => 1,AutoCommit => 0});
$SQL = "SQL語句";
$Select = $dbh -> prepare($SQL);
$Select -> execute();
($cust_code) = $Select->fetchrow_array;
㈡ 【perl—mysql】$sth->execute()中execute()函數的用法是什麼
【perl—mysql】$sth->execute()中execute()函數的用法是:
# To increase your application security and prevent SQL injection attacks,
# it is advisable to use placeholders in queries (prepared statements):
$sql = qq`SELECT field FROM table WHERE name=? AND password=?`;
$sth = $dbh->prepare($sql) or die "Cannot prepare: " . $dbh->errstr();
$sth->execute($name, $password) or die "Cannot execute: " . $sth->errstr();
my $field = $sth->fetchrow_array();
$sth->finish();
以上是使用參數的情況,是為了防止常見的sql注入,防止黑客攻擊,最常見的sql注入。
㈢ perl可以在do裡面執行多個sql語句嗎
可以把多個語句一條條執行,可以用SQL::SplitStatement這個模塊分;如果需要一起執行的話,可以試試DBIx::MultiStatementDo;如果是Oracle,可以用一個匿名的PL/SQL塊試一下:$dbh->do("
BEGIN
UPDATE ……;
DELETE ……;
END;
");
㈣ 怎樣讓perl腳本中執行sql語句
首先得確保安裝了資料庫介面模塊和相應資料庫的驅動模塊,如果是用MySql資料庫(開源免費新手入門學習都喜歡),則需要確定DBI和DBD::mysql這兩個模塊是否安裝;
然後在perl腳本中寫:
!#usr/bin/perl -w
use strict;
use DBI; #使用DBI模塊,DBD::mysql是驅動不必在腳本中使用,安裝了就行
my $dbname = ""; #引號里填上資料庫名
my $ip = ""; #引號里填上要訪問的資料庫的ip地址,資料庫是本機就寫127.0.0.1
my $port = ""; #引號里填上要訪問的資料庫的埠號,mysql默認埠號是3306
my $host = "dbi:mysql:" . $dbname . ":" . $ip . ":" . $port ;
my $user = "root"; #訪問資料庫使用的用戶名
my $password = "xXxX"; #該用戶名所使用的密碼
my $dbh = DBI -> connect($host,$user,$password) or die "$@"; #與資料庫建立連接
$dbh -> do("set names \'gbk\';"); #設置輸出中文不亂碼
while(1) #條件永遠為真,除非人為終止,否則不會停止
{ #可以使用control+c停止腳本執行
my $sql = ""; #引號里填上sql語句
$sth = $dbh -> prepare($sql); #送入資料庫做准備
$sth -> execute(); #執行這條sql語句
sleep(300); #設置300秒暫停執行,300秒後繼續執行while
}
$dbh -> disconnect(); #斷開與資料庫的連接
這里使用的是最新的perl和最新的mysql最新,不是復制粘貼別人代碼,前幾天還在用,保證思路沒有問題。
㈤ perl 怎麼調用sqlplus
可以使用兩種方法:
1.require "xxx.pl";
2.use xxx.pm;
加入require或者use在perl中相當於將文件xxx.pl/pm整個文件都添加到調用它的文件中;
例如:
gettime.pl
#!/usr/bin/perl
print "gettime is 2011-07-25 14:40:10\n";
showtime.pl
#!/usr/bin/perl
require "gettime.pl";
print "get time ok\n";
則執行showtime.pl會顯示:
gettime is 2011-07-25 14:40:10
get time ok
㈥ 請教perl中sql語句里使用變數問題
可以在sql裡面使用變數的。如果你的變數裡面含有一些特殊的轉義字元,請使用DBI模塊的quote功能;如果變數裡面不含一些特殊的轉義字元,則在sql語句裡面直接用單引號即可。
㈦ perl中如何把變數插入DBI中的sql語句
這樣寫就行:
$sth=$dbh->prepare("selectsite,ip,time,filesfromsjwheretimelike'$ny%'orderbyiddesc");
㈧ perl用do去執行sql語句會commit,如$dbh->do($ref[$i]);將do改為什麼不會自動commit
一般可以使用prepare和execute來執行SQL語句。do的用途比較受限。但沒聽說do是自動commit的,是否你的資料庫配置有自動commit?
㈨ perl腳本for循環多次insert
不行的原因是什麼? 就光看你現在的程序,顯然是不對的,應該報語法錯,SQL最後沒有雙引號,而且你這個看上去是兩條SQL語句,而且perl字元串中間也不允許換行。如果非要換行,可以使用qq~的形式,即:
$shareresult=$conn->execute_sql(qq~
INSERTINTOtmp_xk_stop_info(custid,servid,pid)
SELECT0,servid,pid
FROMbiz_proct
WHEREetime>=TRUNC(sysdate+$i)
ANDetime<TRUNC(sysdate+1+$i);
~);
$shareresult=$conn->execute_sql("updatetmp_xk_stop_infosetstopdate=trunc(sysdate+1+$i-1/24/60/60");