Added another test for issue 699

This commit is contained in:
Jenny Tam 2018-05-02 16:14:08 -07:00
Родитель 25f85906b6
Коммит 31685c4295
1 изменённых файлов: 86 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,86 @@
--TEST--
GitHub issue #699 - binding integer as output parameter failed
--DESCRIPTION--
This test uses the sample stored procedure provided by the user, in which an
error situation caused the binding to fail with an irrelevant error message about UTF-8 translation. This test proves that this issue has been fixed.
--ENV--
PHPT_EXEC=true
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
require_once('MsCommon.inc');
$connectionOptions = array("CharacterSet"=> "UTF-8", "ConnectionPooling"=>1);
$conn = connect($connectionOptions);
$tableName1 = "table_issue699_1";
$tableName2 = "table_issue699_2";
$procName = "proc_issue699";
dropTable($conn, $tableName1);
dropTable($conn, $tableName2);
dropProc($conn, $procName);
// Create two test tables without encryption
$sql = "CREATE TABLE $tableName1 (correio_electronico NVARCHAR(50), nome NVARCHAR(50), telefones NVARCHAR(15), id_entidade INT)";
$stmt = sqlsrv_query($conn, $sql);
if (!$stmt) {
fatalError("Failed to create table $tableName1\n");
}
$sql = "CREATE TABLE $tableName2 (estado TINYINT NOT NULL DEFAULT 0)";
$stmt = sqlsrv_query($conn, $sql);
if (!$stmt) {
fatalError("Failed to create table $tableName2\n");
}
// Create the stored procedure
$sql = "CREATE PROCEDURE $procName @outparam INT OUTPUT AS
BEGIN
SET @outparam = 100;
INSERT INTO $tableName1 (correio_electronico, nome, telefones, id_entidade)
SELECT 'membros@membros.pt', 'Teste', 'xxx', 1
FROM $tableName2 CC
WHERE CC.estado = 100
BEGIN TRY
SET @outparam = 123
END TRY
BEGIN CATCH
END CATCH
END";
$stmt = sqlsrv_query($conn, $sql);
if (!$stmt) {
fatalError("Error in creating the stored procedure $procName\n");
}
$sql_callSP = "{call $procName(?)}";
// Initialize the output parameter
$outParam = 1;
$params = array(array(&$outParam, SQLSRV_PARAM_OUT));
$stmt = sqlsrv_query($conn, $sql_callSP, $params);
if (!$stmt) {
fatalError("Error in calling $procName\n");
}
while ($res = sqlsrv_next_result($stmt));
if ($outParam != 123) {
echo "The output param value $outParam is unexpected!\n";
}
dropTable($conn, $tableName1);
dropTable($conn, $tableName2);
dropProc($conn, $procName);
// Free handles
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
echo "Done\n";
?>
--EXPECT--
Done