Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Вниз

Синтаксис Query   Найти похожие ветки 

 
Skulll ©   (2004-05-07 17:01) [0]


 SELECT n.id_price, n.id_sklad
   FROM nakl_in n
   WHERE n.id_nakl_in=:id_nakl_in
   INTO :ID_PRICE1, :ID_SKLAD
;
 SELECT s.id_price
   FROM sklad s
   WHERE s.id_sklad=:ID_SKLAD
   INTO :ID_PRICE2
 ;
 EXECUTE PROCEDURE price_copy (:ID_PRICE1, :ID_PRICE2);

Делфа не понимает INTO в Select в Query.
Модно ли в Query использовать локальные переменные?
Хранимую процедуру сделять не представляется возможным.


 
Мунька ©   (2004-05-07 17:06) [1]

Чего то я не понимаю, а причем здесь INTO к SELECT? Вы хотите как-то по-особому назвать извлеченные данные? Или что?
Или INTO - особенность Интербэйса?


 
HSolo ©   (2004-05-07 17:16) [2]

>Хранимую процедуру сделять не представляется возможным
Так - да :) А зачем ее с клиента создавать?

На сервере:
create procedure New_Procedure (входные_параметры)
returns (выходные_параметры)
as
begin
 /* Procedure Text */
 suspend;
end

На клиенте:
select ... from New_Procedure (входные_параметры)


 
Skulll ©   (2004-05-07 17:24) [3]

>Мунька
>INTO - особенность Интербэйса?
Это я догодывался, я так для примера привел

>HSolo
У меня сервер Cache. Он тоже INTO в SELECT не понимает.

Вот можно ли какнибудь в стандартном SQL(QUERY) не зависящем от Interbase"а использовать локальные переменные, т.е обьявить та их можно но как в них из select"а передать значения


 
Nikolay M. ©   (2004-05-07 17:41) [4]

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


 
Мунька ©   (2004-05-07 17:44) [5]

Параметризованный запрос
sqltxt = "DELETE FROM TableHistory " + AnsiString("\n");
sqltxt =  sqltxt  + "WHERE UserId =" + IntToStr(UserId);
sqltxt += " AND (DateTimeEvent BETWEEN :DTEB AND :DTEE) ";
//:DTEB, :DTEE - параметры, их отличительная особенность :

ADODelHist->SQL->Clear();
  ADODelHist->SQL->Add(sqltxt);
  try
  {

    //Здесь в параметры передаются значения
      ADODelHist->Parameters->ParamByName(WideString("DTEB"))->Value = BDT;
      ADODelHist->Parameters->ParamByName(WideString("DTEE"))->Value = EDT;
   
   if (!ADODelHist->Prepared)
       ADODelHist->Prepared = true;
  ADODelHist->ExecSQL() ;
  }
  catch(...)
  {
   ModalResult = mrCancel;
   return;
  }


 
HSolo ©   (2004-05-07 17:51) [6]

Про Cache я не знаю ничего, кроме факта его существования :( Но, может, Вам достаточно выполнить с клиента примерно такой запрос:

SELECT n.id_price id_price1, n.id_sklad, s.id_price id_price2
  FROM nakl_in n
  JOIN sklad s on s.id_sklad = n.id_sklad
  WHERE n.id_nakl_in = :id_nakl_in

(с точностью до синтаксиса - не знаю, как выглядит join в cache)


 
Skulll ©   (2004-05-08 10:32) [7]

>Nikolay M.
>Почему пример из сабжа просто не сделать одним запросом? Не >нужны будут никакие переменные.
Это и есть один запрос. Правдо я про ";" забыл, надо наверное SET TERM.

>Мунька ©
у меня задача немного другая.
:id_nakl_in - входной параметр
ID_PRICE1, :ID_PRICE2, :ID_SKLAD - локальные переменные определяемые через :id_nakl_in
Выходных параметров нет.

Вообще я нашен немного геморойный, но выход. Надо на каждый блок создовани свой запрос.
Блок 1

SELECT n.id_price, n.id_sklad
  FROM nakl_in n
  WHERE n.id_nakl_in=:id_nakl_in
  INTO :ID_PRICE1, :ID_SKLAD

Блок 2

SELECT s.id_price
  FROM sklad s
  WHERE s.id_sklad=:ID_SKLAD
  INTO :ID_PRICE2

Блок 3

EXECUTE PROCEDURE price_copy (:ID_PRICE1, :ID_PRICE2)

Но у меня price_copy состоит из четырех блоков с циклом.
Как я понял SQL Query нельзя такое проделять


 
Desdechado ©   (2004-05-08 15:09) [8]

а что, вызвать квери 3 раза с разным текстом запроса нельзя?
имхе, самый простой выход



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2004.05.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.032 c
11-1074414351
Insurge
2004-01-18 11:25
2004.05.30
Не компилиркет проект с MCK...


7-1082428272
VonVan
2004-04-20 06:31
2004.05.30
Перезагрузка, Выключение PC


1-1084558378
Bulanov
2004-05-14 22:12
2004.05.30
Развернуть приложение


1-1085001011
netVare
2004-05-20 01:10
2004.05.30
Как организовать поБИТовое чтение/запись из/в файла


7-1082626574
Alex_s
2004-04-22 13:36
2004.05.30
Работа с контроллером





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский