PHP PDO MSSQL存储过程

PHP PDO MSSQL存储过程,php,sql-server,stored-procedures,pdo,Php,Sql Server,Stored Procedures,Pdo,我对MSSQL数据库的访问有限,我有带有PHP5.6和PDO库的CentOS服务器。我需要运行将结果写入临时表的存储过程,然后从该表中进行选择以获取所需的数据 实际上有3条语句,其中2条是执行存储过程,1条是SELECT。若我将它们全部放在一个语句中,那个么该语句将不返回任何内容(但应在列表80行处返回),但该语句不会返回任何错误 但如果我对语句进行除法,它会在第二次调用时返回错误 General SQL Server error: Check messages from the SQL Ser

我对MSSQL数据库的访问有限,我有带有PHP5.6和PDO库的CentOS服务器。我需要运行将结果写入临时表的存储过程,然后从该表中进行选择以获取所需的数据

实际上有3条语句,其中2条是执行存储过程,1条是SELECT。若我将它们全部放在一个语句中,那个么该语句将不返回任何内容(但应在列表80行处返回),但该语句不会返回任何错误

但如果我对语句进行除法,它会在第二次调用时返回错误

General SQL Server error: Check messages from the SQL Server [208] (severity 16) [(null)]
下面是代码:`

try {
    $this->db = new PDO 
("dblib:host=".$options['host'].";dbname=".$options['db'], $options['user'], $options['pass'], array(PDO::ATTR_PERSISTENT=>true));
}catch (PDOException $e) {
  $this->addLog("Failed to get DB handle: " . $e->getMessage());
  return false;
}

$tmp = "##good123";
$hotelinctable = "##hotelinc123";

$sql = "EXEC sp_executesql @createtable = N'CREATE TABLE ".$hotelinctable." (inc int null)'

        EXEC sp_executesql N'EXEC up_prclm
        @CDateFrom = @CDFrom,
        @CDateTill = @CDTill,
        @DateFrom = @DFrom,
        @DateTill = @DTill,
        @ConfirmedDateFrom = @ConfDFrom,
        @ConfirmedDateTill = @ConfDTill,
        @PDateFrom = @PDFrom,
        @PDateTill = @PDTill,
        @Owner = @Own,
        @HPartner = @HPartn,
        @state = @StateInc,
        @TourList = @TList,
        @PartnerList = @PList,
        @PGroupList = @PGList,
        @MediatorList = @MList,
        @Curr = @CurrInc,
        @BaseCurr = @BaseCurrInc,
        @DateRate = @RateDate,
        @Rate = @RateType,
        @Round = @RoundType,
        @StatusList = @ClaimStatusList,
        @Name = @ResultTableName,
        @hotelinc = @HIncTableName,
        @TourCurrency = @TourCurrencyInc,
        @claimstr = @ClaimList',
        N'@CDFrom datetime2,@CDTill datetime2,@DFrom datetime2,@DTill datetime2,@ConfDFrom datetime2,@ConfDTill datetime2,@PDFrom datetime2,@PDTill datetime2,@Own int,@HPartn int,@StateInc int,@TList varchar(8000),@PList varchar(8000),@PGList varchar(8000),@MList varchar(8000),@CurrInc int,@BaseCurrInc int,@RateDate datetime2,@RateType int,@RoundType int,@ClaimStatusList varchar(8000),@ResultTableName varchar(8000),@HIncTableName varchar(8000),@TourCurrencyInc bit,@ClaimList varchar(8000)',
        '1900-01-01 00:00:00','2079-06-06 00:00:00','2017-05-12 00:00:00','2017-05-12 00:00:00','1900-01-01 00:00:00','2079-06-06 00:00:00','1900-01-01 00:00:00','2079-06-06 00:00:00',-2147483647,-2147483647,0,'','2870','','',2,1,'2017-05-12 00:00:00',0,0,'1, 2, 4, 5','".$tmp."','".$hotelinctable."',0,''
";



$r = $this->db->prepare($sql);
$r->execute();

$err = $r->errorInfo();
$this->addLog("ERRCHK: ".var_export($err, true));

$sql = "SELECT prclm.claim AS order_id, 
               prclm.amount AS full_cost, 
               prclm.net AS net_cost, 
               currency.alias AS currency, 
               prclm.hnet AS hotel_net, 
               prclm.fnet AS flights_net, 
               prclm.inet AS insurance_net, 
               prclm.tnet AS transfers_net, 
               prclm.enet AS excursions_net, 
               prclm.vnet AS visas_net, 
               prclm.supnet AS suppliment_net, 
               prclm.snet AS services_ner, 
               hpartner.name AS hotel_partner, 
               claim.confirmed AS is_confirmed
          FROM ".$tmp." prclm 
    INNER JOIN claim ON prclm.claim = claim.inc 
    LEFT OUTER JOIN order ord ON ord.inc = prclm.order 
    LEFT OUTER JOIN partner hpartner ON hpartner.inc = ord.partner 
    LEFT OUTER JOIN currency on currency.inc = prclm.currency
      ORDER BY prclm.inc DESC";

$r = $this->db->prepare($sql);
$r->execute();
$err = $r->errorInfo();
$this->addLog("ERRCHK: ".var_export($err, true));

$res = $r->fetchAll(PDO::FETCH_ASSOC);

$this->addLog("RES: ".var_export($res, true));  `
请告知-什么是错误的,以及如何调用多个过程,然后选择