Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Hubbitus
Статус: 10-й класс
Рейтинг: 90
∙ повысить рейтинг >>
Victor Pyrlik
Статус: Профессионал
Рейтинг: 82
∙ повысить рейтинг >>
Анатолий Ясень
Статус: Студент
Рейтинг: 43
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 417
от 20.05.2009, 23:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 496, Экспертов: 40
В номере:Вопросов: 1, Ответов: 2

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 167400: Здравствуйте, коллеги. Есть такой вопрос - Имеем SQL Server 2005 с некой базой данных. Имеем внутри БД хранимую процедуру StoreProcA, которая выполняет несколько INSERT (что является невозможностью превращения её в функцию, к со...


Вопрос № 167.400
Здравствуйте, коллеги.

Есть такой вопрос -

Имеем SQL Server 2005 с некой базой данных.

Имеем внутри БД хранимую процедуру StoreProcA, которая выполняет несколько INSERT (что является невозможностью превращения её в функцию, к сожалению) и возвращает некое значение -- SELECT @RetVal

Имеем вторую хранимю процедуру StoreProcB, которая выполняет простой SELECT.

Задача:

вызвать процедуру StoreProcA внутри SELECT'а процедуры StoreProcB. То есть вот так:

SELECT
field1,
field2,
field3,
(StoreProcA field1,field2,field3) as field4
from SomeTable
where SomeThing = @SomeThing

Есть, конечно, вариант сначала вызвать процедуру StoreProcB и затем в С# в цикле вызывать процедуру StoreProcA и вносить возвращаемое значение в поле field4, но хотелось бы это решить средствами SQL, если это вообще возможно, а то поиски в Google ощутимых результатов не дали.

Заранее всем благодарен за помощь.
Отправлен: 15.05.2009, 22:57
Вопрос задал: Иоффе Мэир Вэлевич (статус: Студент)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 6)

Отвечает: Varkon
Здравствуйте, Иоффе Мэир Вэлевич!

Для вашей задачи может быть эффективным использование курсора - возможно существуют диалекты SQL которые позволяют подобные конструкции - то T-SQL к ним явно не оносится. А вот работа с курсором - имхо вероятно то что вам надо.
Ответ отправил: Varkon (статус: 3-й класс)
Ответ отправлен: 16.05.2009, 22:33

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 249295 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 4


    Отвечает: Hubbitus
    Здравствуйте, Иоффе Мэир Вэлевич!
    1) решение: можно из StoreProcA вернуть тип таблицу, тогда из нее в нее банально можно будет делать SELECT, ну и объединить (JOIN) его с остальными результатами
    2) А чем Вас не устраивают стандартные OUT параметры хранимых процедур? Для примера:
    CREATE PROCEDURE [dbo].[StoreProcA] (@ret int OUT)
    AS
    -- There Somereal stuff, then return needed values:
    SET @ret = 77
    GO

    Далее, уже в StoreProcB:

    DECLARE @somevar int;
    EXEC test.test @somevar OUT

    SELECT
    field1,
    field2,
    field3,
    @somevar as field4
    from SomeTable
    where SomeThing = @SomeThing

    ....
    ---------
    Если у Вас есть все что Вы хотите - значит Вы мало хотите!
    Ответ отправил: Hubbitus (статус: 10-й класс)
    Ответ отправлен: 16.05.2009, 22:59

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 249299 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 3
    Комментарий оценки:
    Не, не то. Внимательнее читайте вопрос.


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

    Отправить вопрос экспертам этой рассылки

    Приложение (если необходимо):

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное