Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Получить результат выполнения процедуры  [new]
Александр-р-р
Member

Откуда:
Сообщений: 32
Что-то затупил и никак не соображу:

как получить внутри харинимой прецедуры результат другой процедуры.
Например, процедура надобавление записи.

Внутри нее я вазываю SELECT на поиск записи. Если recordcount больше 0,то запись обновляется, иначе - добавляется.
Вот как заиметь этот recordcount.

Была похожая ветка про результат динамической процедуры. Отличие в моем случае в том, что стоит sql 7 и там переменную table нет возможности создать.

Неужели нет ничего подобного на recordcount ?
30 июн 05, 10:49    [1661916]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения процедуры  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
???
update t1 set c1=...
       where...
if @@rowcount = 0
      insert t1 values(...)
30 июн 05, 10:53    [1661930]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения процедуры  [new]
Александр-р-р
Member

Откуда:
Сообщений: 32
Ага...

@@rowcount - это оно и есть?
30 июн 05, 10:59    [1661958]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения процедуры  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
А что, в 7 ещё @@rowcount не было?
30 июн 05, 11:15    [1662048]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения процедуры  [new]
Jem
Member

Откуда:
Сообщений: 735
declare @cnt int
set @cnt=(select count(*) from yourtable t
where t=id
if @cnt>0
update... 
else
insert...

30 июн 05, 11:16    [1662052]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения процедуры  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37101
Jem
declare @cnt int
set @cnt=(select count(*) from yourtable t
where t=id
if @cnt>0
update... 
else
insert...


if exists(select * from yourtable t where t=id)
update... 
else
insert...
30 июн 05, 11:17    [1662057]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения процедуры  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Можно и так написать

if exists(select * from t1 where...)
    update t1 set ...
           where...
else
   insert...
30 июн 05, 11:18    [1662066]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения процедуры  [new]
Александр-р-р
Member

Откуда:
Сообщений: 32
Спасибо, спасибо...
А то начал все перводить на SQL сервер, и то, что Делфях очевидно, то здесь некоторые затруднения, а Большая Книга, которой пользуюсь, ответа на такие тонкости не дает.

@cnt=(select ...)

а вот это красиво. Но что тогда лежит в переменной - весь набор записей?
30 июн 05, 13:10    [1662719]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения процедуры  [new]
Александр-р-р
Member

Откуда:
Сообщений: 32
Заглючил интернет, не успел рассмотреть:
@cnt int
30 июн 05, 13:13    [1662734]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения процедуры  [new]
itON
Member

Откуда: Москва
Сообщений: 391
Александр-р-р
а вот это красиво. Но что тогда лежит в переменной - весь набор записей?

Их количество.
Кстати if exists по-шустрее будет
30 июн 05, 13:15    [1662755]     Ответить | Цитировать Сообщить модератору
 Re: Получить результат выполнения процедуры  [new]
Александр-р-р
Member

Откуда:
Сообщений: 32
Да, я тоже наткнулся на exist и подумал, что почему-то никто не предложил.

В принципе, все ясно. Всем спасибо.
30 июн 05, 14:35    [1663315]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить