我无法使用pdo和freetds(tds版本= 4.2,freebsd 10.0,php 5.6.2(在SQL Server 2008中执行存储过程:
$host = 'SRV1';
$db = 'FLOT_RRR';
$user = 'coolman';
$pass = '******';
$charset = 'windows-1251';
$dsn = "dblib:version=4.2;host=$host;dbname=$db;$charset";
try {
$pdo = new PDO($dsn, $user, $pass);
} catch(PDOException $e) {
die("Failed to get DB handle: " . $e->getMessage()) ;
}
$st = $pdo->prepare('EXEC dbo.getNumberSmallShips');
$res = $st->execute();
var_dump($res)
返回bool(false(
我的存储过程:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[getNumberSmallShips]
AS
BEGIN
SET NOCOUNT ON;
SELECT COUNT (*)
FROM
(SELECT
FLO_RN, FLO_FKL
FROM
flotmintrans
WHERE
FLO_FKL LIKE '%мс%' OR
FLO_FKL LIKE '%категория%' OR
FLO_FKL LIKE '%категория 3%' OR
FLO_FKL LIKE '%категория 4%' OR
FLO_FKL LIKE '%категория 5%' OR
FLO_FKL LIKE '1' OR
FLO_FKL LIKE '2' OR
FLO_FKL LIKE '3' OR
FLO_FKL LIKE '5' OR
FLO_FKL LIKE '4' AND
FLO_DSU IS NULL) AS subquery
END
怎么了?
连接到数据库的用户coolman必须具有执行存储过程的权利。就是这样。