Merge pull request #510 from yitam/maxLength
Upload another functional test for sqlsrv
This commit is contained in:
commit
5321684b74
113
test/functional/sqlsrv/test_max_length.phpt
Normal file
113
test/functional/sqlsrv/test_max_length.phpt
Normal file
|
@ -0,0 +1,113 @@
|
|||
--TEST--
|
||||
Maximum length outputs from stored procs for string types (nvarchar, varchar, and varbinary)
|
||||
--SKIPIF--
|
||||
<?php require('skipif.inc'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
set_time_limit(0);
|
||||
|
||||
$inValue1 = str_repeat( 'A', 3999 );
|
||||
|
||||
$outValue1 = "TEST";
|
||||
|
||||
sqlsrv_configure('WarningsReturnAsErrors', 0);
|
||||
sqlsrv_configure('LogSubsystems', 15);
|
||||
|
||||
require( 'MsCommon.inc' );
|
||||
|
||||
$conn = Connect();
|
||||
|
||||
$field_type = 'NVARCHAR(4000)';
|
||||
|
||||
$stmt = sqlsrv_query($conn, "DROP PROC [TestFullLenStringsOut]");
|
||||
$stmt = sqlsrv_query($conn, "CREATE PROC [TestFullLenStringsOut] (@p1 " . $field_type . ", @p2 " . $field_type . " OUTPUT)
|
||||
AS
|
||||
BEGIN
|
||||
SELECT @p2 = CONVERT(" . $field_type . ", @p1 + N'A')
|
||||
END");
|
||||
if( $stmt === false ) {
|
||||
die( print_r( sqlsrv_errors(), true ));
|
||||
}
|
||||
|
||||
// remember to increment buffer_len to 8001 to see what happens
|
||||
$stmt = sqlsrv_query($conn, "{CALL [TestFullLenStringsOut] (?, ?)}",
|
||||
array(
|
||||
array($inValue1, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING('utf-8'), SQLSRV_SQLTYPE_NVARCHAR(4000)),
|
||||
array(&$outValue1, SQLSRV_PARAM_INOUT, SQLSRV_PHPTYPE_STRING('utf-8'), SQLSRV_SQLTYPE_NVARCHAR(4000))));
|
||||
if( $stmt === false ) {
|
||||
die( print_r( sqlsrv_errors(), true ));
|
||||
}
|
||||
while( sqlsrv_next_result( $stmt )) {}
|
||||
print_r( strlen( $outValue1 ));
|
||||
echo "\n";
|
||||
print_r( substr( $outValue1, -2, 2 ));
|
||||
|
||||
$field_type = 'VARCHAR(8000)';
|
||||
$inValue1 = str_repeat( 'A', 7999 );
|
||||
|
||||
$stmt = sqlsrv_query($conn, "DROP PROC [TestFullLenStringsOut]");
|
||||
if( $stmt === false ) {
|
||||
die( print_r( sqlsrv_errors(), true ));
|
||||
}
|
||||
$stmt = sqlsrv_query( $conn, "CREATE PROC [TestFullLenStringsOut] (@p1 " . $field_type . ", @p2 " . $field_type . " OUTPUT)
|
||||
AS
|
||||
BEGIN
|
||||
SELECT @p2 = CONVERT(" . $field_type . ", @p1 + 'A')
|
||||
END" );
|
||||
if( $stmt === false ) {
|
||||
die( print_r( sqlsrv_errors(), true ));
|
||||
}
|
||||
|
||||
$stmt = sqlsrv_query($conn, "{CALL [TestFullLenStringsOut] (?, ?)}",
|
||||
array(
|
||||
array($inValue1, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR), SQLSRV_SQLTYPE_VARCHAR(8000)),
|
||||
array(&$outValue1, SQLSRV_PARAM_INOUT, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_CHAR), SQLSRV_SQLTYPE_VARCHAR(8000))));
|
||||
if( $stmt === false ) {
|
||||
die( print_r( sqlsrv_errors(), true ));
|
||||
}
|
||||
while( sqlsrv_next_result( $stmt )) {}
|
||||
echo "\n";
|
||||
print_r( strlen( $outValue1 ));
|
||||
echo "\n";
|
||||
print_r( substr( $outValue1, -2, 2 ));
|
||||
|
||||
$field_type = 'VARBINARY(8000)';
|
||||
$inValue1 = str_repeat( 'A', 7999 );
|
||||
|
||||
$stmt = sqlsrv_query($conn, "DROP PROC [TestFullLenStringsOut]");
|
||||
if( $stmt === false ) {
|
||||
die( print_r( sqlsrv_errors(), true ));
|
||||
}
|
||||
$stmt = sqlsrv_query($conn, "CREATE PROC [TestFullLenStringsOut] (@p1 " . $field_type . ", @p2 " . $field_type . " OUTPUT)
|
||||
AS
|
||||
BEGIN
|
||||
SELECT @p2 = CONVERT(" . $field_type . ", @p1 + 0x42)
|
||||
END");
|
||||
if( $stmt === false ) {
|
||||
die( print_r( sqlsrv_errors(), true ));
|
||||
}
|
||||
|
||||
$stmt = sqlsrv_query($conn, "{CALL [TestFullLenStringsOut] (?, ?)}",
|
||||
array(
|
||||
array($inValue1, SQLSRV_PARAM_IN, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY), SQLSRV_SQLTYPE_VARBINARY(8000)),
|
||||
array(&$outValue1, SQLSRV_PARAM_INOUT, SQLSRV_PHPTYPE_STRING(SQLSRV_ENC_BINARY), SQLSRV_SQLTYPE_VARBINARY(8000))));
|
||||
if( $stmt === false ) {
|
||||
die( print_r( sqlsrv_errors(), true ));
|
||||
}
|
||||
while( sqlsrv_next_result( $stmt )) {}
|
||||
echo "\n";
|
||||
print_r( strlen( $outValue1 ));
|
||||
echo "\n";
|
||||
print_r( substr( $outValue1, -2, 2 ));
|
||||
|
||||
sqlsrv_close( $conn );
|
||||
|
||||
?>
|
||||
--EXPECT--
|
||||
4000
|
||||
AA
|
||||
8000
|
||||
AA
|
||||
8000
|
||||
AB
|
Loading…
Reference in a new issue