Run stored procedure for each val in array
Can't wrap my head around this one..
I have two separate stored procedures, let's call them:
createTable (takes a varchar userID as input)
runReport (takes two dates for input, as varchar)
createTable creates a virtual table 开发者_开发百科called ##tempTable (if it doesn't exists and add the provided userID). So if I run
EXEC createTable 'user-32'
EXEC createTable 'user-33'
EXEC createTable 'user-34'
I then have these IDs in ##tempTable.
After that I want to run this:
EXEC runReport '2011-01-01', '2011-10-01'
Which should give me a big tasty output. The thing is that this works flawlessly when running it like so:
mssql_query("EXEC createTable 'user-32'");
mssql_query("EXEC createTable 'user-33'");
mssql_query("EXEC createTable 'user-34'");
mssql_query("EXEC runReport '2011-01-01', '2011-10-01'");
But when I try to loop out the createTable-lines the runReport-SP doesn't return any data.
Example:
$userIDs = explode(',', $userID_str);
foreach ($userIDs as $user) {
if (mb_strlen($user) > 0) {
mssql_query("EXEC createTable '$user'");
}
}
I'm wondering if this could have anything to do with a broken connection or something? It seems that the runReport-SP can find the #tempTable but it can't read from it when I use a loop.
Any ideas?
Thanks! :)
And what about calling Your procedures this way:
$conn = mssql_connect(...);
$stmt = mssql_init("createTable", $conn);
foreach ($userIDs as $user) {
if(mb_strlen($user) > 0) {
mssql_bind($stmt, "@userID", &$user, SQLVARCHAR);
mssql_execute($stmt);
}
}
$stmt = mssql_init("runReport", $conn);
mssql_bind($stmt, "@date1", "2011-01-01", SQLVARCHAR);
mssql_bind($stmt, "@date2", "2011-01-01", SQLVARCHAR);
$result = mssql_execute($stmt);
print_r(mssql_fetch_array($result));
?
精彩评论