Вывод хранимой процедуры SQL Server Params в PHP

Я бы добавил псевдоним, например, 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
6
задан John Saunders 16 September 2009 в 00:26
поделиться

7 ответов

Согласно этой странице на ошибках PHP, Вы имеете к (шахта акцента):

звонить mssql_next_result() для каждого набора результатов, возвращенного SP. Таким образом, можно обработать несколько результатов.

Когда mssql_next_result() возвращает false, у Вас будет доступ к выходным параметрам и возвращаемому значению.

3
ответ дан 17 December 2019 в 02:34
поделиться

Попытайтесь указать определенные длины выходных полей

mssql_bind($procedure, "@outVar1", &$outVar1, SQLVARCHAR, true, false, 36);
mssql_bind($procedure, "@outVar2", &$outVar2, SQLVARCHAR, true, false, 36);

И посмотрите, имеет ли это значение.

Также отметьте явное и передать вывод Вар ссылкой, хотя я не знаю, требуется ли это все еще или нет.

1
ответ дан 17 December 2019 в 02:34
поделиться

Я сомневаюсь, что это вызывает Вашу проблему, но почему Вы используете DISTINCT?

Это - просто codesmell - любое время, Вы видите, что, это означает, что существует потенциал для возврата дубликатов, который "обрабатывается" с ОТЛИЧНЫМ, и почему дубликаты были бы возвращены, вероятно, потребности, на которые посмотрят.

0
ответ дан 17 December 2019 в 02:34
поделиться

Не уверенный, какую версию PHP Вы выполняете, но я думаю в некоторых более старых, в отношении которых необходимо было передать переменные, заставляют значение выходить снова:

Таким образом, необходимо было бы поместить и charcter перед переменной при вызывании функции:

mssql_bind($procedure, "@outVar1", &$outVar1, SQLVARCHAR, true);
mssql_bind($procedure, "@outVar2", &$outVar2, SQLVARCHAR, true);

Также согласно этой ссылке некоторые версии имели проблему с выходными параметрами

0
ответ дан 17 December 2019 в 02:34
поделиться

Гм. Несколько комментариев

1) "mssql_execute ($procedure, $conn)"; является неправильным в этом, 2-й параметр не является соединением.

2) Если Вы получаете "выполнение хранимой процедуры, отказавшее", затем я должен был создать хост DB в freetds.conf и ссылке это.

В той точке я не получаю ошибки, но я не получаю выходные параметрические усилители также. Это - PHP 5.1 на RHEL5.

Если я включаю вход freeTDS, я вижу, что данные возвращаются в возвращаемом пакете. На данном этапе я не знаю, почему это не работает ни один (кроме поддержки SQL Server для PHP, немного недостает!)

0
ответ дан 17 December 2019 в 02:34
поделиться

Второй параметр выполнения должен быть истинным, а не 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);
2
ответ дан 17 December 2019 в 02:34
поделиться

У меня те же проблемы.

Предположительно, вы используете драйвер FreeTDS для связи с SQL Server, существует известная проблема с тем, как работает драйвер. Об этом говорится в FAQ

http://www.freetds.org/faq.html#ms.output.parameters

Документация по API для того, что предлагается в FAQ, находится здесь, но я не могу найти способ получить к ней доступ с помощью PHP:

http://www.freetds.org/reference/a00276.html

Я все еще не могу подключить это, и я нахожусь в точке, где я собираюсь отказаться от выходных параметров.

0
ответ дан 17 December 2019 в 02:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: