php-sqlsrv/test/functional/sqlsrv/TC85_MaxOutputParams.phpt

91 lines
2.2 KiB
Plaintext
Raw Normal View History

2017-05-04 01:00:31 +02:00
--TEST--
PHP - Max Output Params Test
--DESCRIPTION--
Fetch data as VARCHAR(MAX)
--ENV--
PHPT_EXEC=true
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
require_once('MsCommon.inc');
2017-05-04 01:00:31 +02:00
function MaxOutputParamsTest($buffer, $phptype, $sqltype, $expected)
{
setup();
2017-05-04 01:00:31 +02:00
$conn = connect();
2017-05-04 01:00:31 +02:00
dropProc($conn, "EXEC_TEST");
2017-05-04 01:00:31 +02:00
createProc(
2017-05-04 01:00:31 +02:00
$conn,
"EXEC_TEST",
"@OUT varchar(80) output",
"SET NOCOUNT ON; select @OUT = '$expected'; return (0)
"
);
2017-05-04 01:00:31 +02:00
$outstr = $buffer;
2017-05-04 01:00:31 +02:00
$sql = "execute EXEC_TEST ?";
$stmt = sqlsrv_prepare($conn, $sql, array(array( &$outstr, SQLSRV_PARAM_OUT, $phptype, $sqltype)));
sqlsrv_execute($stmt);
echo "Expected: $expected Received: $outstr\n";
if ($outstr !== $expected) {
2017-05-04 01:00:31 +02:00
print_r(sqlsrv_errors(SQLSRV_ERR_ALL));
return(-1);
}
sqlsrv_free_stmt($stmt);
sqlsrv_close($conn);
return(0);
}
//--------------------------------------------------------------------
// repro
2017-05-04 01:00:31 +02:00
//
//--------------------------------------------------------------------
function repro()
2017-05-04 01:00:31 +02:00
{
$failed = null;
$testName = "PHP - Max Output Params Test";
startTest($testName);
2017-05-04 01:00:31 +02:00
try {
2017-05-04 01:00:31 +02:00
$failed |= MaxOutputParamsTest("ab", SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR), SQLSRV_SQLTYPE_VARCHAR('MAX'), "abc");
$failed |= MaxOutputParamsTest(null, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR), SQLSRV_SQLTYPE_VARCHAR('10'), "abc");
$failed |= MaxOutputParamsTest(null, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR), SQLSRV_SQLTYPE_VARCHAR('MAX'), "abc");
$failed |= MaxOutputParamsTest(null, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY), SQLSRV_SQLTYPE_VARCHAR('MAX'), "abc");
$failed |= MaxOutputParamsTest("abc", SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR), null, "abc");
} catch (Exception $e) {
2017-05-04 01:00:31 +02:00
echo $e->getMessage();
}
if ($failed) {
fatalError("Possible Regression: Value returned as VARCHAR(MAX) truncated");
}
2017-05-04 01:00:31 +02:00
endTest($testName);
2017-05-04 01:00:31 +02:00
}
repro();
2017-05-04 01:00:31 +02:00
?>
--EXPECT--
Expected: abc Received: abc
Expected: abc Received: abc
Expected: abc Received: abc
Expected: abc Received: abc
Expected: abc Received: abc
Test "PHP - Max Output Params Test" completed successfully.