首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

perl $dbh->prepare()参数的有关问题

2012-04-25 
perl $dbh-prepare()参数的问题请问一下,我通过下面的语句获取oracle表的字段值,为什么运行的时候提示SQL

perl $dbh->prepare()参数的问题
请问一下,我通过下面的语句获取oracle表的字段值,为什么运行的时候提示SQL语句不对?我直接在数据库下使用desc tablename都是正常的。

Perl code
$dbh->prepare("desc tablename");


另外有个问题也请教一下,如果我将tablenamee替换为?,然后执行的话,也总是报错,请问是怎么回事?

Perl code
$dbh->prepare("select * from ?");foreach $table (@tablenames){    $sth->execute($table);    ...}


多谢!

[解决办法]
desc可能不是一个sql,只是一个数据库客户端的命令。
一般table名不支持?,其他语言的sql库大概也是这样。只有常量(字符串,整数什么的)才支持。
[解决办法]
1、我认为desc不是dml语言,应该属于ddl语言。你试一试使用do或者execute方法来执行。实在不行,你就封装成一个函数,得到返回值。
2、字段名、表名不能使用问号,问号表示变量绑定,所以,只有使用变量的地方才能使用问号。
[解决办法]
另外,还有一个办法知道一个表中的所有字段:
使用select * from tabel where 1=2;然后通过hash将字段取出来。

热点排行