免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4154 | 回复: 5

求教:perl调用复杂SQL语句 [复制链接]

论坛徽章:
1
2015亚冠之萨济拖拉机
日期:2015-09-22 10:59:00
发表于 2015-07-28 10:00 |显示全部楼层
SQL语句如下:
select data0010.cust_code,data0010.customer_name,data0050.customer_part_number,
data0059.customer_part_desc,data0050.cp_rev,data0278.parameter_desc,data0494.parameter_value,DATA0050.RKEY AS RKEY50
from data0010,data0038,data0034,data0278,data0025,data0050,data0059,data0506 left outer join
data0494 on (data0494.source_ptr=data0506.rkey)
where data0506.parameter_ptr=data0278.rkey
and data0506.ttype=3
and data0494.route_step_ptr=data0038.rkey
and data0034.rkey=data0038.dept_ptr
and data0038.source_ptr=data0025.rkey
and data0025.ancestor_ptr=data0050.rkey
and Data0059.CUST_Part_PTR=Data0050.RKEY
and data0059.customer_ptr=data0010.rkey
and (data0050.CUSTOMER_PART_NUMBER+data0050.cp_rev) = 'xxx'
and data0278.PARAMETER_NAME='xxxx'
order by cust_code

如上语句怎么代入到perl的代码中呢?用


my $sql = qq(select data0010.cust_code,data0010.customer_name,data0050.customer_part_number,
data0059.customer_part_desc,data0050.cp_rev,data0278.parameter_desc,data0494.parameter_value,DATA0050.RKEY AS RKEY50
from data0010,data0038,data0034,data0278,data0025,data0050,data0059,data0506 left outer join
data0494 on (data0494.source_ptr=data0506.rkey)
where data0506.parameter_ptr=data0278.rkey
and data0506.ttype=3
and data0494.route_step_ptr=data0038.rkey
and data0034.rkey=data0038.dept_ptr
and data0038.source_ptr=data0025.rkey
and data0025.ancestor_ptr=data0050.rkey
and Data0059.CUST_Part_PTR=Data0050.RKEY
and data0059.customer_ptr=data0010.rkey
and (data0050.CUSTOMER_PART_NUMBER+data0050.cp_rev) = 'xxx'
and data0278.PARAMETER_NAME='xxxx'
order by cust_code
);
my $dbconn = $DBH->prepare($sql);这样得不到想要的结果。

论坛徽章:
0
发表于 2015-07-28 10:19 |显示全部楼层
execute
fetch

论坛徽章:
0
发表于 2015-07-28 10:20 |显示全部楼层
你只prepare了没有execute?

看了下你的SQL结构,如果是我的话就使用DBIx::Class

论坛徽章:
1
2015亚冠之萨济拖拉机
日期:2015-09-22 10:59:00
发表于 2015-07-28 10:44 |显示全部楼层
回复 3# 兰花仙子
当然有,我的问题不在这里,我是问那一串sql语句用perl怎么写?
为防止大家误解我补上几句吧!!

my $dbconn = $DBH->prepare($sql);
   $dbconn->execute() or die $DBI::errstr;
if ( my @row_ary = $dbconn->fetchrow_array ) {            
    print "@row_ary\n";
}
else {
    print "script run to here\n";
   

论坛徽章:
1
2015亚冠之萨济拖拉机
日期:2015-09-22 10:59:00
发表于 2015-07-28 10:47 |显示全部楼层
兰花仙子
DBIx::Class这个模块没接触过

论坛徽章:
0
发表于 2015-07-28 11:24 |显示全部楼层
qq()

这对括号与你SQL里的括号分歧了吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP