Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2016, 21:58   #1
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию PHP, MSSQL, ХП - тип курсора изменен, как я из merge получу выходной ID?

Коллеги, ай нид хелп.

Есть ХП:

Код:
create procedure dbo.CF_IU(
  @ID bigint,
  @EXECUTORS_ID bigint,
  @CUSTOMERS_ID bigint,
  @CAPTION varchar(256),
  @POST varchar(256),
  @PHONE varchar(64),
  @EMAIL varchar(256),
  @DELST int
)
as
declare @OUT_ID bigint;
begin
  begin transaction;
  if exists(select * from "CF" where ID = @ID) begin
	update CF set
        EXECUTORS_ID = @EXECUTORS_ID,
        CUSTOMERS_ID = @CUSTOMERS_ID,
        "CAPTION" = @CAPTION,
        POST = @POST,
        PHONE = @PHONE,
        EMAIL = @EMAIL,
        DELST = @DELST
	where ID = @ID;
    set @OUT_ID = @ID;
  end else begin
    insert into CF (
        EXECUTORS_ID,
        CUSTOMERS_ID,
        CAPTION,
        POST,
        PHONE,
        EMAIL,
        DELST
    )values(
        @EXECUTORS_ID,
        @CUSTOMERS_ID,
        @CAPTION,
        @POST,
        @PHONE,
        @EMAIL,
        @DELST
    );
    select @OUT_ID = @@IDENTITY;
  end;

  commit transaction;
  select @OUT_ID as ID;
end
Из SQL Manager выполняется прекрасно, а вот из php - выдает ошибку - "тип курсора изменен". Запрос такой:

Код:
exec CF_IU @ID = ?,@CUSTOMERS_ID = ?,@EXECUTORS_ID = ?,@CAPTION = ?,@POST = ?,@PHONE = ?,@EMAIL = ?,@DELST = ?;
Параметры проверены, подключение к БД - вот такое:

PHP код:
$DB odbc_pconnect("Driver={SQL Server};Server=$DBHostName,1433;Database=$DBName;"$DBUserName$DBPasswordSQL_CUR_USE_DRIVER); 
Данные вносятся, но вот эта ошибка портит всю малину.
Возможно, кто-то сталкивался? Подскажите, plz.

N.B. Желающие ответить "используй mssql_query" и т.д. - не тратьте время, нужно именно на ODBC
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 22.06.2016, 22:11   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
Желающие ответить "используй mssql_query" и т.д. - не тратьте время, нужно именно на ODBC
, а предложить переписать по кошерному
https://msdn.microsoft.com/en-us/library/bb510625.aspx, тоже наказуемо?
come-on вне форума Ответить с цитированием
Старый 22.06.2016, 22:15   #3
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
, а предложить переписать по кошерному
https://msdn.microsoft.com/en-us/library/bb510625.aspx, тоже наказуемо?
Я, наверное, чего-то недопонял, так что уточню: как я из merge получу выходной ID?
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 22.06.2016, 22:16   #4
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

это справка, а не басня крылова, там все есть
come-on вне форума Ответить с цитированием
Старый 22.06.2016, 22:23   #5
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

То есть, с вопросом - как так получается, что во вменяемых средствах запрос отрабатывает, а в php - нет, подсказок не последует? Я верно понимаю?

За наводку спасибо, но опасаюсь, что не подойдёт.
Да и глупо, имея под рукой ХП, не использовать их. А если задача будет не только на хранение истории, а еще и на массу действий с данными - тоже всё в пхп запросами пасть? Глупость какая-то.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 22.06.2016, 22:25   #6
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
Да и глупо, имея под рукой ХП, не использовать их. А если задача будет не только на хранение истории, а еще и на массу действий с данными - тоже всё в пхп запросами пасть? Глупость какая-то.
кто вам про запросы в пхп говорил?

Цитата:
что во вменяемых средствах запрос отрабатывает, а в php - нет, подсказок не последует?
тут по моему вопрос и ответ))
come-on вне форума Ответить с цитированием
Старый 22.06.2016, 22:31   #7
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
кто вам про запросы в пхп говорил?
Стоп-стоп-стоп! Я запутался.
Вот в теме русским по белому написано - PHP, MSSQL, ХП. Или меня глаза подводят?
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 22.06.2016, 22:34   #8
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

PHP, MSSQL, ХП а может и не глаза...
ну и вот это почитать стоит https://msdn.microsoft.com/en-us/library/ms190315.aspx чтобы потом не приходить сюда в случае чего и опять рассказывать про "глупости"
come-on вне форума Ответить с цитированием
Старый 22.06.2016, 22:46   #9
ych_del
Форумчанин
 
Аватар для ych_del
 
Регистрация: 06.02.2011
Сообщений: 149
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
PHP, MSSQL, ХП а может и не глаза...
ну и вот это почитать стоит https://msdn.microsoft.com/en-us/library/ms190315.aspx чтобы потом не приходить сюда в случае чего и опять рассказывать про "глупости"
Взорву тебе мозг, дорогой оппонент - я в курсе, что такое @@identity.

Наверное, неверно объяснил. Попробую еще раз. Мне нужно сделать select из SP.

Итак.
Потребность - выполнить ХП (совсем не обязательно про добавление записи в одну таблицу) из пхп. В пхп писать стопицот запросов - верх идиотизма, лучше использовать ХП.

Пример:
Есть КЛ, у него есть ID, ФИО и должность (заполняется вручную, но хранится в отдельной таблице - списке должностей).

С ХП - делаем выборку из списка должностей по совпадению с переданной, если нет - добавляем, получаем новый ID через @@identity, если есть - просто получаем ID.

Далее - заносим запись в таблицу КЛ и возвращаем ID.

В пхп это будет решаться одной строкой.

Баз ХП - всю эту херню мы проделываем в пхп с гораздо большим кол-вом запросов.

А вот тебе (ты уж извини, что я на "ты" - старая фидошная привычка), судя по всему, немного невдомёк, какие преимущества дают ХП и как ими пользоваться.
Профессиональный конвертор галлюцинаций заказчика в алгоритмическую структуру.
ych_del вне форума Ответить с цитированием
Старый 22.06.2016, 22:53   #10
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

кол-во букав пропорционально кол-ву маразма)))

мердже это и есть 1 запрос вместо вашей груды никчемных запросов в представленной хп
короче идите читайте матчасть, а то уже смешно даже школьникам

Последний раз редактировалось come-on; 22.06.2016 в 22:57.
come-on вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
apache php mssql глючит! frox Софт 1 22.11.2011 16:53
PHP 5.3.3 + MSSQL 2008 DimaKGD PHP 2 10.03.2011 14:25
MSSQL + PHP: Проблема подключения Arnezami PHP 20 17.02.2010 15:53
Как узнать изменен ли текст в RichEdit? unicode Общие вопросы Delphi 7 13.07.2009 16:40
Как узнать когда был изменен (создан) интерфейс версии IPv6. Crazyman Работа с сетью в Delphi 0 15.12.2008 00:51