Merge pull request #402 from yitam/outputParam
extracted select output param into a different test
This commit is contained in:
commit
6a5a37ad84
85
test/pdo_sqlsrv/pdo_param_output_select_variant.phpt
Normal file
85
test/pdo_sqlsrv/pdo_param_output_select_variant.phpt
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
--TEST--
|
||||||
|
Test sql_variant as an output parameter
|
||||||
|
--DESCRIPTION--
|
||||||
|
Since output param is not supported for sql_variant columns, this test verifies a proper error message is returned
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
include 'MsCommon.inc';
|
||||||
|
|
||||||
|
function TestSimpleSelect($conn, $tableName)
|
||||||
|
{
|
||||||
|
$count = 0;
|
||||||
|
|
||||||
|
$stmt = $conn->prepare("SELECT ? = COUNT(* ) FROM $tableName");
|
||||||
|
$stmt->bindParam( 1, $count, PDO::PARAM_INT, 4 );
|
||||||
|
$stmt->execute();
|
||||||
|
echo "Number of rows: $count\n";
|
||||||
|
|
||||||
|
$value = 'xx';
|
||||||
|
|
||||||
|
$stmt = $conn->prepare("SELECT ? = c2_variant FROM $tableName");
|
||||||
|
$stmt->bindParam( 1, $value, PDO::PARAM_STR, 50 );
|
||||||
|
$stmt->execute();
|
||||||
|
echo "Variant column: $value\n\n";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function CreateVariantTable($conn, $tableName)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
$stmt = $conn->exec("CREATE TABLE [$tableName] ([c1_int] int, [c2_variant] sql_variant)");
|
||||||
|
}
|
||||||
|
catch (Exception $e)
|
||||||
|
{
|
||||||
|
echo "Failed to create a test table\n";
|
||||||
|
echo $e->getMessage();
|
||||||
|
}
|
||||||
|
|
||||||
|
$tsql = "INSERT INTO [$tableName] ([c1_int], [c2_variant]) VALUES (1, ?)";
|
||||||
|
|
||||||
|
$data = "This is to test if sql_variant works with output parameters";
|
||||||
|
|
||||||
|
$stmt = $conn->prepare($tsql);
|
||||||
|
$result = $stmt->execute(array($data));
|
||||||
|
if (! $result)
|
||||||
|
echo "Failed to insert data\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
function RunTest()
|
||||||
|
{
|
||||||
|
StartTest("pdo_param_output_select_variant");
|
||||||
|
try
|
||||||
|
{
|
||||||
|
include("MsSetup.inc");
|
||||||
|
// Connect
|
||||||
|
$conn = new PDO( "sqlsrv:server=$server;Database=$databaseName", $uid, $pwd);
|
||||||
|
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
|
||||||
|
echo "\n";
|
||||||
|
|
||||||
|
// Now test with another stored procedure
|
||||||
|
$tableName = GetTempTableName();
|
||||||
|
CreateVariantTable($conn, $tableName);
|
||||||
|
|
||||||
|
// Test a simple select to get output
|
||||||
|
TestSimpleSelect($conn, $tableName);
|
||||||
|
|
||||||
|
$conn = null;
|
||||||
|
}
|
||||||
|
catch (Exception $e)
|
||||||
|
{
|
||||||
|
echo $e->getMessage();
|
||||||
|
}
|
||||||
|
echo "\nDone\n";
|
||||||
|
EndTest("pdo_param_output_select_variant");
|
||||||
|
}
|
||||||
|
|
||||||
|
RunTest();
|
||||||
|
|
||||||
|
?>
|
||||||
|
--EXPECT--
|
||||||
|
|
||||||
|
Number of rows: 1
|
||||||
|
SQLSTATE[42000]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Implicit conversion from data type sql_variant to nvarchar(max) is not allowed. Use the CONVERT function to run this query.
|
||||||
|
Done
|
||||||
|
Test "pdo_param_output_select_variant" completed successfully.
|
|
@ -1,29 +1,11 @@
|
||||||
--TEST--
|
--TEST--
|
||||||
Test parametrized insert and sql_variant as an output parameter.
|
Test parametrized insert and sql_variant as an output parameter.
|
||||||
--DESCRIPTION--
|
--DESCRIPTION--
|
||||||
parameterized queries is not supported for Sql_Variant columns, this test, verifies a proper error message is returned
|
Since output param is not supported for sql_variant columns, this test verifies a proper error message is returned
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
include 'MsCommon.inc';
|
include 'MsCommon.inc';
|
||||||
|
|
||||||
function TestSimpleSelect($conn)
|
|
||||||
{
|
|
||||||
$value = 0;
|
|
||||||
|
|
||||||
$stmt = $conn->prepare("SELECT ? = COUNT(* ) FROM cd_info");
|
|
||||||
$stmt->bindParam( 1, $value, PDO::PARAM_INT, 4 );
|
|
||||||
$stmt->execute();
|
|
||||||
echo "Number of items: $value\n";
|
|
||||||
|
|
||||||
$title = 'xx';
|
|
||||||
|
|
||||||
$stmt = $conn->prepare("SELECT ? = title FROM cd_info WHERE artist LIKE 'Led%'");
|
|
||||||
$stmt->bindParam( 1, $title, PDO::PARAM_STR, 25 );
|
|
||||||
$stmt->execute();
|
|
||||||
echo "CD Title: $title\n\n";
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function TestReverse($conn)
|
function TestReverse($conn)
|
||||||
{
|
{
|
||||||
$procName = GetTempProcName('sqlReverse');
|
$procName = GetTempProcName('sqlReverse');
|
||||||
|
@ -127,16 +109,13 @@ function RunTest()
|
||||||
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
|
$conn->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
|
||||||
echo "\n";
|
echo "\n";
|
||||||
|
|
||||||
// Test a simple select to get output
|
|
||||||
TestSimpleSelect($conn);
|
|
||||||
|
|
||||||
// Test with a simple stored procedure
|
// Test with a simple stored procedure
|
||||||
TestReverse($conn);
|
TestReverse($conn);
|
||||||
|
|
||||||
// Now test with another stored procedure
|
// Now test with another stored procedure
|
||||||
$tableName = GetTempTableName();
|
$tableName = GetTempTableName();
|
||||||
CreateVariantTable($conn, $tableName);
|
CreateVariantTable($conn, $tableName);
|
||||||
|
|
||||||
TestOutputParam($conn, $tableName);
|
TestOutputParam($conn, $tableName);
|
||||||
|
|
||||||
$conn = null;
|
$conn = null;
|
||||||
|
@ -154,9 +133,6 @@ RunTest();
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
|
|
||||||
Number of items: 7
|
|
||||||
CD Title: Led Zeppelin 1
|
|
||||||
|
|
||||||
SQLSTATE[22018]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Operand type clash: nvarchar(max) is incompatible with sql_variant
|
SQLSTATE[22018]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Operand type clash: nvarchar(max) is incompatible with sql_variant
|
||||||
SQLSTATE[22018]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Operand type clash: nvarchar(max) is incompatible with sql_variant
|
SQLSTATE[22018]: [Microsoft][ODBC Driver 13 for SQL Server][SQL Server]Operand type clash: nvarchar(max) is incompatible with sql_variant
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue