php-sqlsrv/test/sqlsrv/test_precision_size.phpt
2017-05-04 09:16:29 -07:00

103 lines
3.2 KiB
PHP

--TEST--
invalid precision and sizes for parameters.
--SKIPIF--
<?php require('skipif.inc'); ?>
--FILE--
<?php
sqlsrv_configure( 'WarningsReturnAsErrors', 0 );
sqlsrv_configure( 'LogSeverity', SQLSRV_LOG_SEVERITY_ALL );
require( 'MsCommon.inc' );
$conn = Connect();
if( !$conn ) {
FatalError( "sqlsrv_create failed." );
}
$stmt = sqlsrv_prepare( $conn, "IF OBJECT_ID('test_precision_size', 'U') IS NOT NULL DROP TABLE test_precision_size" );
sqlsrv_execute( $stmt );
sqlsrv_free_stmt( $stmt );
$stmt = sqlsrv_prepare( $conn, "CREATE TABLE test_precision_size (id tinyint, varchar_type varchar(8000), decimal_type decimal(38,19)" );
sqlsrv_execute( $stmt );
sqlsrv_free_stmt( $stmt );
$f1 = 1;
$f2 = "testtestte";
$f3 = 12.0;
// test an invalid size for a varchar field (8000 max)
$stmt = sqlsrv_query( $conn, "INSERT INTO test_precision_size (id, varchar_type, decimal_type ) VALUES (?, ?, ?)",
array( $f1, array( $f2, SQLSRV_PARAM_IN, null, SQLSRV_SQLTYPE_VARCHAR(9000)), $f3 ));
if( $stmt !== false ) {
die( "sqlsrv_query should have failed." );
}
else {
print_r( sqlsrv_errors() );
}
// test an invalid precision where precision > than max allowed (38)
$stmt = sqlsrv_query( $conn, "INSERT INTO test_precision_size (id, varchar_type, decimal_type ) VALUES (?, ?, ?)",
array( $f1, array( $f2, SQLSRV_PARAM_IN, null, SQLSRV_SQLTYPE_VARCHAR(8000)), array( $f3, SQLSRV_PARAM_IN, null, SQLSRV_SQLTYPE_DECIMAL( 40, 0 ))));
if( $stmt !== false ) {
die( "sqlsrv_query should have failed." );
}
else {
print_r( sqlsrv_errors() );
}
// test an invalid precision where the scale > precision
$stmt = sqlsrv_query( $conn, "INSERT INTO test_precision_size (id, varchar_type, decimal_type ) VALUES (?, ?, ?)",
array( $f1, array( $f2, SQLSRV_PARAM_IN, null, SQLSRV_SQLTYPE_VARCHAR(8000)), array( $f3, SQLSRV_PARAM_IN, null, SQLSRV_SQLTYPE_DECIMAL( 15, 30 ))));
if( $stmt !== false ) {
die( "sqlsrv_query should have failed." );
}
else {
print_r( sqlsrv_errors() );
}
sqlsrv_query( $conn, "DROP TABLE test_precision_size" );
sqlsrv_close( $conn );
?>
--EXPECT--
Array
(
[0] => Array
(
[0] => IMSSP
[SQLSTATE] => IMSSP
[1] => -31
[code] => -31
[2] => An invalid size or precision for parameter 2 was specified.
[message] => An invalid size or precision for parameter 2 was specified.
)
)
Array
(
[0] => Array
(
[0] => IMSSP
[SQLSTATE] => IMSSP
[1] => -31
[code] => -31
[2] => An invalid size or precision for parameter 3 was specified.
[message] => An invalid size or precision for parameter 3 was specified.
)
)
Array
(
[0] => Array
(
[0] => IMSSP
[SQLSTATE] => IMSSP
[1] => -31
[code] => -31
[2] => An invalid size or precision for parameter 3 was specified.
[message] => An invalid size or precision for parameter 3 was specified.
)
)