Я бы добавил псевдоним, например, my_time
String sql = "select to_char(to_char(start_time,'HH24:MI') ||' - '||
to_char(end_time,'HH24:MI')) as my_time from register_table";
//...
dlm.addElement(rs.getString("my_time"))l
Согласно этой странице на ошибках PHP, Вы имеете к (шахта акцента):
звонить
mssql_next_result()
для каждого набора результатов, возвращенного SP. Таким образом, можно обработать несколько результатов.Когда
mssql_next_result()
возвращает false, у Вас будет доступ к выходным параметрам и возвращаемому значению.
Попытайтесь указать определенные длины выходных полей
mssql_bind($procedure, "@outVar1", &$outVar1, SQLVARCHAR, true, false, 36);
mssql_bind($procedure, "@outVar2", &$outVar2, SQLVARCHAR, true, false, 36);
И посмотрите, имеет ли это значение.
Также отметьте явное и передать вывод Вар ссылкой, хотя я не знаю, требуется ли это все еще или нет.
Я сомневаюсь, что это вызывает Вашу проблему, но почему Вы используете DISTINCT
?
Это - просто codesmell - любое время, Вы видите, что, это означает, что существует потенциал для возврата дубликатов, который "обрабатывается" с ОТЛИЧНЫМ, и почему дубликаты были бы возвращены, вероятно, потребности, на которые посмотрят.
Не уверенный, какую версию PHP Вы выполняете, но я думаю в некоторых более старых, в отношении которых необходимо было передать переменные, заставляют значение выходить снова:
Таким образом, необходимо было бы поместить и charcter перед переменной при вызывании функции:
mssql_bind($procedure, "@outVar1", &$outVar1, SQLVARCHAR, true);
mssql_bind($procedure, "@outVar2", &$outVar2, SQLVARCHAR, true);
Также согласно этой ссылке некоторые версии имели проблему с выходными параметрами
Гм. Несколько комментариев
1) "mssql_execute ($procedure, $conn)"; является неправильным в этом, 2-й параметр не является соединением.
2) Если Вы получаете "выполнение хранимой процедуры, отказавшее", затем я должен был создать хост DB в freetds.conf и ссылке это.
В той точке я не получаю ошибки, но я не получаю выходные параметрические усилители также. Это - PHP 5.1 на RHEL5.
Если я включаю вход freeTDS, я вижу, что данные возвращаются в возвращаемом пакете. На данном этапе я не знаю, почему это не работает ни один (кроме поддержки SQL Server для PHP, немного недостает!)
Второй параметр выполнения должен быть истинным, а не conn. Это должно сработать:
$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,true);
print($outVar1);
print($outVar2);
У меня те же проблемы.
Предположительно, вы используете драйвер FreeTDS для связи с SQL Server, существует известная проблема с тем, как работает драйвер. Об этом говорится в FAQ
http://www.freetds.org/faq.html#ms.output.parameters
Документация по API для того, что предлагается в FAQ, находится здесь, но я не могу найти способ получить к ней доступ с помощью PHP:
http://www.freetds.org/reference/a00276.html
Я все еще не могу подключить это, и я нахожусь в точке, где я собираюсь отказаться от выходных параметров.