USE [AD_Users]
GO
/****** Object: StoredProcedure [dbo].[my_Vol_Quota_SUM] Script Date: 02/04/2016 10:26:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[my_Vol_Quota_SUM]
@Server varchar(9) OUT -- cannot be NULL
,@Vol varchar(6) -- cannot be NULL
,@CDate varchar(10) -- cannot be NULL
,@SQuota float OUT -- cannot be NULL
,@Size float OUT -- cannot be NULL
,@Free float OUT -- cannot be NULL
AS
BEGIN
SET NOCOUNT ON;
SELECT @Server=Vol_Size_Info.Server,
@SQuota=ROUND(SUM(Quota_Size_Info.Quota)/1024/1024, 4),
@Size=ROUND(Vol_Size_Info.Size/1024/1024, 4),
@Free=ROUND(100-(100*SUM(CONVERT(Float,Quota_Size_Info.Quota)))/CONVERT(Float,Vol_Size_Info.Size), 2)
FROM Vol_Size_Info INNER JOIN
Quota_Size_Info ON Vol_Size_Info.CDate = Quota_Size_Info.CDate and
Vol_Size_Info.Vol = Quota_Size_Info.Vol
WHERE Vol_Size_Info.Vol=@Vol and Vol_Size_Info.CDate=@CDate
GROUP BY Vol_Size_Info.Server, Vol_Size_Info.Size, Vol_Size_Info.Vol
END
В результате выходные параметры мне надо вывести в табличку с одной строкой.
Вот код PHP
<?php
$pdo = new PDO("sqlsrv:Server=IPADDRESS,1433;Database=BASE");
$sql = "CALL my_Vol_Quota_SUM(?,?,?,?,?,?)";
$sth = $pdo->prepare($sql);
$sth->bindParam(1, $Server, PDO::PARAM_STR);
$sth->bindParam(2, $Vol, PDO::PARAM_STR);
$sth->bindParam(3, $CDate, PDO::PARAM_STR);
$sth->bindParam(4, $squota, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 7);
$sth->bindParam(5, $size, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 7);
$sth->bindParam(6, $free, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT,7);
$sth->execute();
print "<td align=\"center\">".$squota."</td>";
print "<td align=\"center\">".$size."</td>";
print "<td align=\"center\">".$free."</td>";
$pdo = null;
?>
Так вот в результате получаем крозябры с текстом ошибки такого рода anslating string for input param 5 to UCS-2: No mapping for the Unicode character exists in the target multi-byte code page.
Я погуглил, нашел такую команду:
$sth->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_UTF8);
Пробовал с разными параметрами, не помогает. Подскажите, может кто сталкивался?
При чем если использую обычные SQL запросы не через PDO с кодировкой все нормально.