你需要有数据库的用户名和密码
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");