无法绕过这一个......
我有两个独立的存储过程,让我们称之为:
createTable (takes a varchar userID as input)
runReport (takes two dates for input, as varchar)
createTable创建一个名为## tempTable的虚拟表(如果它不存在并添加提供的userID)。所以如果我跑
EXEC createTable 'user-32'
EXEC createTable 'user-33'
EXEC createTable 'user-34'
然后我在## tempTable中有这些ID。
之后我想运行它:
EXEC runReport '2011-01-01', '2011-10-01'
哪个应该给我一个很好的输出。 问题在于,当它像这样运行时,它可以完美地运行:
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'");
但是当我尝试循环使用createTable-lines时,runReport-SP不会返回任何数据。
示例:
$userIDs = explode(',', $userID_str);
foreach ($userIDs as $user) {
if (mb_strlen($user) > 0) {
mssql_query("EXEC createTable '$user'");
}
}
我想知道这是否可能与断开的连接有什么关系?似乎runReport-SP可以找到#tempTable但是当我使用循环时它无法读取它。
有什么想法吗?
谢谢! :)
答案 0 :(得分:0)
那么以这种方式调用你的程序呢:
$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));