Я не могу выполнить хранимую процедуру в SQL Server 2008 с помощью PDO - PullRequest
0 голосов
/ 25 апреля 2018

Я не могу выполнить хранимую процедуру в SQL Server 2008, используя PDO и freetds (версия tds = 4.2, FreeBSD 10.0, php 5.6.2): ​​

$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

В чем дело?

1 Ответ

0 голосов
/ 26 апреля 2018

Пользователь Coolman, который подключается к БД, должен иметь права на выполнение хранимой процедуры getNumberSmallShips. Вот и все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...