【问题标题】:Placeholder using DBI使用 DBI 的占位符
【发布时间】:2017-05-20 20:49:48
【问题描述】:

我想在下面的查询中使用占位符作为日期(3-01-2017)。如何做到这一点?下面是我在使用 DBI 的脚本中使用的查询。

$sth = $dbh->prepare("select  CODE_ID,NAME_CODE,SUM(INR_COL + OUT_COL) AS \"TOTAL SUM\"from nwsa where trunc(REPORT_DATE)=to_date('3-01-2017,'dd-mm-yyyy) AND (CODE_ID='A12A' OR CODE_ID='A12B'OR CODE_ID='A12C' OR CODE_ID='A12D' OR CODE_ID='A12E' OR CODE_ID='A12EB' OR CODE_ID='A12F' OR CODE_ID='A12G' OR CODE_ID='A12I' OR CODE_ID='A12O' OR CODE_ID='A12U' ) group by  CODE_ID,NAME_CODE");  # your query here
$sth->execute( );
----this is my complete query ---
SUM(INR_COL + OUT_COL) AS "TOTAL SUM"
FROM nwsa
WHERE trunc(REPORT_DATE) = to_date('3-01-2017','dd-mm-yyyy')
AND (CODE_ID='A12A'
OR CODE_ID   ='A12B'
OR CODE_ID   ='A12C'
OR CODE_ID   ='A12D'
OR CODE_ID   ='A12E'
OR CODE_ID   ='A12EB'
OR CODE_ID   ='A12F'
OR CODE_ID   ='A12G'
OR CODE_ID   ='A12I'
OR CODE_ID   ='A12O'
OR CODE_ID   ='A12U')
GROUP BY CODE_ID,
  NAME_CODE
  ;

【问题讨论】:

  • 如果有人需要它就让它工作:

标签: sql database dbi prepare


【解决方案1】:
my $t= '06-01-2017';
my $sql2 = "SELECT CODE_ID,NAME_CODE,SUM(INR_COL + OUT_COL) AS \"TOTAL SUM\" FROM nwsa WHERE trunc(REPORT_DATE) = to_date(?,'dd-mm-yyyy')AND CODE_ID IN (?,?,?,?,?,?,?,?,?,?,?)GROUP BY CODE_ID,NAME_CODE"; 
 $sth =$dbh->prepare($sql2);


 $sth->execute($t,'A12A','A12B','A12C','A12D','A12E','A12EB','A12F','A12G','A12I','A12O','A12U');
 $out = DBIx::Dump->new('format' => csv,   # excel or csv
                        'output' => $FILENAME1, # file to save as
                        'sth'    => $sth);
 $out->dump();

【讨论】:

    猜你喜欢
    • 2015-08-07
    • 2010-12-24
    • 2012-12-22
    • 1970-01-01
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 1970-01-01
    相关资源
    最近更新 更多