Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
dimpase
0 / 0 / 0
Регистрация: 16.11.2018
Сообщений: 7
1

Mssql PDO execute procedure return output data

14.06.2019, 11:40. Просмотров 192. Ответов 13

Приветствую гуру! есть хранимая процедура на сервере

SQL
1
2
3
4
5
DECLARE @Code VARCHAR(8)
EXEC @return_value = [dbo].[Generate]
@dID = id,
@Code = @Code OUTPUT
SELECT @Code AS N'@Code'
Мне нужно получить параметр output code. Процедура срабатывает но код не приходит обратно, пусто.
Что я делаю не так?

PHP
1
2
3
4
5
6
7
$query="Exec Generate :dr, :Code";
        $stm=$mspdo->prepare($query);
        $stm->bindParam(":dr",$id,PDO::PARAM_INT);
        $stm->bindParam(":Code", $code,PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT,8);    
        $stm->execute();
        $i=0;
        $row = $stm->fetch();
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2019, 11:40
Ответы с готовыми решениями:

PDO - not execute
И так делаю подключение к ДБ через PDO.PDO возвращает PDOobject()..все OK.. Теперь делаю обычный...

Функция для PDO execute
Всем привет. Есть функция, которая автоматически собирает значения в инпутах и формирует часть...

Как быть с подготовленными запросами в PDO? execute() не возвращает количество затронутых строк
Метод exec() возвращает количество затронутых строк, но его нельзя использовать в подготовленных...

PHP Data Objects (PDO)
Доброго всем дня. Нахожусь на этапе познания PDO. Вот в чем вопрос: <?php...

использование execute procedure .... returning_values
Добрый день. Подскажите решение такого вопроса: могу ли я использовать синтаксис оператора...

13
atanov
343 / 305 / 109
Регистрация: 26.05.2016
Сообщений: 1,863
14.06.2019, 15:21 2
Цитата Сообщение от dimpase Посмотреть сообщение
$mspdo
поподробнее вот про эту переменную.
0
dimpase
0 / 0 / 0
Регистрация: 16.11.2018
Сообщений: 7
14.06.2019, 18:58  [ТС] 3
SQL
1
2
$mspdo=NEW PDO($dsn,$user,$pswd);
        $mspdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
0
atanov
343 / 305 / 109
Регистрация: 26.05.2016
Сообщений: 1,863
16.06.2019, 11:15 4
dimpase, погодите, не обратил сразу внимания на 7-ю стр., а сбор куда? Соберите а ассоциативный массив:
PHP
1
$row = $stm->fetch(PDO::fetch_ASSOC);
0
16.06.2019, 11:15
dimpase
0 / 0 / 0
Регистрация: 16.11.2018
Сообщений: 7
17.06.2019, 12:46  [ТС] 5
atanov, Undefined class constant 'fetch_ASSOC'
0
atanov
343 / 305 / 109
Регистрация: 26.05.2016
Сообщений: 1,863
17.06.2019, 12:50 6
dimpase, сорри:
PHP
1
$row = $stm->fetch(PDO::FETCH_ASSOC);
0
dimpase
0 / 0 / 0
Регистрация: 16.11.2018
Сообщений: 7
17.06.2019, 12:54  [ТС] 7
atanov, так же, ни чего. ((
0
atanov
343 / 305 / 109
Регистрация: 26.05.2016
Сообщений: 1,863
17.06.2019, 12:55 8
dimpase, тогда выполните в консоле Ваш запрос Exec Generate :dr, :Code. Больше не на что грешить.
0
dimpase
0 / 0 / 0
Регистрация: 16.11.2018
Сообщений: 7
17.06.2019, 14:00  [ТС] 9
Цитата Сообщение от atanov Посмотреть сообщение
...
попробовол так изменить запрос, -
PHP
1
$query="Exec Generate @ID=:dr, @Code=:Code output";
General error: 20018 Cannot use the OUTPUT option when passing a constant to a stored procedure.
0
atanov
343 / 305 / 109
Регистрация: 26.05.2016
Сообщений: 1,863
17.06.2019, 14:18 10
dimpase, я не очень хорошо знаком с mssql, поэтому не смогу подсказать. А что консольный запрос выдал, если напрямую так запросить:
SQL
1
EXEC Generate :dr, :Code
Да, но только заменив именованные плейсхолдеры.
0
dimpase
0 / 0 / 0
Регистрация: 16.11.2018
Сообщений: 7
17.06.2019, 14:50  [ТС] 11
Цитата Сообщение от atanov Посмотреть сообщение
...
База не на моем сервере, я не могу удаленно посмотреть что в консоли. Программист баз данных сказал что это вреный запрос.
И написал что,- "проще всего вызывать так:"
SQL
1
2
3
4
5
6
7
DECLARE @Code VARCHAR(8)
 
EXEC [dbo].[Generate]
 @ID = 901,
 @Code = @Code OUTPUT
 
SELECT @Code AS N'Code
Типа все работает... процедура должна вернуть код из 8и знаков VARCHAR

Добавлено через 15 минут
Нашел ответ на https://stackoverflow.com/questions/...put-parameters

Вопрос, как Select ом вернуть из процедуры этот код как описано на стековерфло?
0
atanov
343 / 305 / 109
Регистрация: 26.05.2016
Сообщений: 1,863
17.06.2019, 14:51 12
dimpase, а исполнение процедуры удалённо допускается? Когда и чем это процедура запускается? Для начала неплохо бы проверить, запустилась ли процедура и что она выдала (записала) в бд ,что потом доступно select'ом
0
dimpase
0 / 0 / 0
Регистрация: 16.11.2018
Сообщений: 7
17.06.2019, 15:09  [ТС] 13
Цитата Сообщение от atanov Посмотреть сообщение
...
Она запускается, и записывает новый код куда и должна. Так как я этот код потом могу просмотреть.
А вот что потом доступно селектом я не знаю.((

Добавлено через 44 секунды
По идее select'ом должен быть доступен возвращаемый код, который и требуется
0
atanov
343 / 305 / 109
Регистрация: 26.05.2016
Сообщений: 1,863
17.06.2019, 15:35 14
Цитата Сообщение от dimpase Посмотреть сообщение
Так как я этот код потом могу просмотреть.
а запросить оттуда где можно поглядеть?
0
17.06.2019, 15:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.06.2019, 15:35

Export data from SQL server (using VB) in new text file and return data
Всем общий привет! Ребята, прошу прощения за дилетантский вопрос, но все когда-то приходится...

$pdo->execute Выдает ошибку
Здравствуйте! Весь день не могу понять почему не работает код. обьект создается корректно,...

Подключение к mssql PDO
Здравствуйте! Скажите, что я делаю не так? Хочу создать класс с подключение к базе данных и потом...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru