SQLSTATE[IMSSP]: Failed to get metadata for Table-Valued Param 1

Рейтинг: 0Ответов: 0Опубликовано: 01.04.2023

Не работает отправки табличного параметра из php в mssql. На стороне mssql создан табличный тип и процедура, которая принимает его на вход

TYPE [dbo].[TvpParam] AS TABLE(
  [test] [NVARCHAR](10) NOT NULL,
  [test2] [INT] NOT NULL,
  [test3] [NVARCHAR](4000) NULL

Пытаюсь отправить данные на вход:

        $data = [
            ['test', 123, '[123, 124, 125]'],
            ['test2', 124, '[222]'],
        ];

        $tvpType = 'TvpParam';

        $tvpInput = array($tvpType => $data);

        $sql = "EXEC DB.dbo.Procedure ?";

        $pdo = DB::connection('server')->getPdo();
        $stmt = $pdo->prepare($sql);

        $stmt->bindParam(1, $tvpInput, PDO::PARAM_LOB);

        $res = $stmt->execute();

После чего получаю ошибку:

+errorInfo: array:3 [
    0 => "IMSSP"
    1 => -100
    2 => "Failed to get metadata for Table-Valued Param 1"
  ]

Версия драйвера: 5.10.1

Версия php: 7.4

Я пытался использовать pdo драйвер и напрямую через sqlsrv_..., ошибка аналогична в обоих случаях. До выполнения процедуры код не доходит, ошибка где-то на уровне создания табличного типа

Ответы

Ответов пока нет.