There is an interesting nuance when executing Transact-SQL stored procedures from PHP that I’ve run into. It seems that if your stored procedure has multiple Transact-SQL statements, PHP will only execute the first statement. This doesn’t mean that you can’t return multiple result sets, they just need to be in one Transact-SQL block or have one block and other queries that do use any variables ran normally prior or after the Transact-SQL block.
Doesn’t Work
SET @SQL1 = 'Select * FROM Table1'
SELECT @SQL1
EXEC sp_executesql @SQL1
SET @SQL2 = 'Select * FROM Table2'
SELECT @SQL2
EXEC sp_executesql @SQL2
Select * FROM Table3
Works
SET @SQL1 = 'Select * FROM Table1 Select * FROM Table2'
SELECT @SQL1
EXEC sp_executesql @SQL1
Select * FROM Table3
I haven’t done extensive research on the cause, but I think it relates to how the PHP mssql_execute function handles SQL returns. I maybe completely off though.
0 Comments