【发布时间】:2023-04-01 01:23:01
【问题描述】:
我无法理解这个..
我有两个独立的存储过程,我们称之为:
createTable (takes a varchar userID as input)
runReport (takes two dates for input, as varchar)
createTable 创建一个名为##tempTable 的虚拟表(如果它不存在并添加提供的用户ID)。所以如果我跑
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,但是当我使用循环时它无法从中读取。
有什么想法吗?
谢谢! :)
【问题讨论】:
-
$userID_str长什么样子? -
只是一个字符串,像这样:user-31,user-32,user-33
-
你确定
mb_strlen($user) > 0会评估为 TRUE 吗? -
嗯,你有什么错误吗?一些警告?确保你在脚本的开头(或在你的索引、init 或 config.php)有这个:
ini_set('display_errors', E_ALL);和error_reporting(E_ALL);。也尝试 var_dump mssql_query() 返回值,无论它没有返回 FALSE ...
标签: php sql-server stored-procedures loops foreach