From 0bc4a3695849d7662b747bf60869ca6a6ae901b8 Mon Sep 17 00:00:00 2001 From: Jenny Tam Date: Mon, 14 May 2018 10:12:53 -0700 Subject: [PATCH] Added test case for Issue 699 --- .../sqlsrv/srv_699_out_param_integer.phpt | 94 +++++++++++++++++++ 1 file changed, 94 insertions(+) create mode 100644 test/functional/sqlsrv/srv_699_out_param_integer.phpt diff --git a/test/functional/sqlsrv/srv_699_out_param_integer.phpt b/test/functional/sqlsrv/srv_699_out_param_integer.phpt new file mode 100644 index 00000000..4a6a5631 --- /dev/null +++ b/test/functional/sqlsrv/srv_699_out_param_integer.phpt @@ -0,0 +1,94 @@ +--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-- + +--FILE-- + "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 \ No newline at end of file