I need help running a stored procedure from SQL Server in PHP. PHP is running on a Unix/Linux server. We cannot get OUTPUT variables to return in PHP. The following is the PHP code:
$conn = mssql_connect('server', 'user', 'pass');
mssql_select_db('db', $conn);
$procedure = mssql_init('usp_StoredProc', $conn);
$tmpVar1 = 'value';
$tmpVar2 = 'value2';
$outVar1 = '';
$outVar2 = '';
mssql_bind($procedure, "@var1", $tmpVar1, SQLVARCHAR, false, false);
mssql_bind($procedure, "@var2", $tmpVar2, SQLVARCHAR, false, false);
mssql_bind($procedure, "@outVar1", $outVar1, SQLVARCHAR, true);
mssql_bind($procedure, "@outVar2", $outVar2, SQLVARCHAR, true);
mssql_execute($procedure,$conn);
print($outVar1);
print($outVar2);
The stored procedure looks like so :
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[usp_StoredProc]
(
@var1 as varchar(36),
@var2 as varchar(10),
@outVar1 varchar(36) OUTPUT,
@outVar2 varchar(36) OUTPUT
)
as
select distinct
@outVar1 = row1,
@outVar2 = row2
from table1
where column1 = @var1
and column2 = @var2
Can anyone tell me why $outVar1 and $outVar2 are not being populated? Thanks a lot for any help!
To call a stored procedure from a PHP application, you prepare and execute an SQL CALL statement. The procedure that you call can include input parameters (IN), output parameters (OUT), and input and output parameters (INOUT).
The real power of stored procedures is the ability to pass parameters and have the stored procedure handle the differing requests that are made.
You can use the command line tool "sqlcmd Utility" from your batch file to connect to a sql server and execute a SQL Statement / stored procedure. you can use SQLCMD to run store procedure from CMD.
According to this page on PHP bugs, you have to (emphasis mine):
call
mssql_next_result()
for each result set returned by the SP. This way you can handle multiple results.When
mssql_next_result()
returns false you will have access to output parameters and return value.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With