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

Вниз

Firebird set <параметр>= значение    Найти похожие ветки 

 
dest81   (2010-01-16 22:35) [0]

Можно ли как-то сделать что-то типа этого:

update table1 set :param=10 where ...

Тоесть я хочу задать поле через переменную


 
turbouser ©   (2010-01-16 22:40) [1]

В общем случае - нет.
В компонентах fib+ по моему можно так


 
sniknik ©   (2010-01-16 22:44) [2]

> В компонентах fib+ по моему можно так
а как тогда, в них возвращается значение через параметр? или на эту вполне стандартную возможность переменных они "забили"?


 
turbouser ©   (2010-01-16 22:50) [3]


> sniknik ©   (16.01.10 22:44) [2]

Там сделано что-то типа макросов.

> или на эту вполне стандартную возможность переменных они
> "забили"?

Не понял


 
sniknik ©   (2010-01-16 23:31) [4]

> Не понял
это переменная, если у нее тип аутпут и ей что то присвоить, то это что то можно получить из нее "снаружи", не обязательно рекордсет ради одного значения возвращать... а если переменную заменить подстановкой значения, ради совершенно не принятой цели, то как вернуть в ней значение? (кстати задокументированная возможность)
в общем если поменять переменную на подстановку ее значения то это уже перестает быть переменной...


 
dest81   (2010-01-16 23:39) [5]

меня не интересует fib+, мне бы надо в процедуре firebird-а. У меня просто поля в таблицу добавляются в программе пользователем, а процедура должна заполнять эти поля, а как их заполнять если я еще не знаю их имени ???...
Неужели ни у кого не было такой ситуации???


 
sniknik ©   (2010-01-16 23:59) [6]

> меня не интересует fib+
зря. принципы у всех похожи, изучи пару тройку разных и фактически поймешь все...

> Неужели ни у кого не было такой ситуации???
до абсурдов стараемся не доводить...

to turbouser

для наглядности
procedure TForm1.Button1Click(Sender: TObject);
begin
 with ADOCommand1 do begin
   CommandText:= "SET :Per =""Test""";
   with Parameters.ParamByName("Per") do begin
     Direction:= pdOutput;
     DataType := ftString;
     Size     := 100;

     Execute;

     ShowMessage(Value);
   end;
 end;
end;

ну это только пример, а так на месте "Test" может быть значение из базы/рассчитаное в скрипте...
а что оно будет возвращать есть сместо переменной макрос, или еще кто заменит переменную подстановкой вида "SET Per =""Test""" например? (или даже "SET =""Test""" т.к. значения переменной мы не задавали)

вот я и говорю на это они похоже "забили" если реализовали то сомнительное удобство с макросами про которое ты сказал.


 
Виталий Панасенко   (2010-01-17 08:34) [7]

В IB6 - нельзя.. в FB, начиная, с не помню, какой версии (1,5 или 2,0)есть EXECUTE STATMENT.. параметром передается сконструированная строка сиквела.. типа
CREATE PROCEDURE DynamicSampleOne (Pname VARCHAR(100))
AS
DECLARE VARIABLE Sql VARCHAR(1024);
DECLARE VARIABLE Par INT;

BEGIN
SELECT MIN(SomeField) FROM SomeTable INTO :Par;
Sql = "EXECUTE PROCEDURE " || Pname || "(";
Sql = Sql || CAST(Par AS VARCHAR(20)) || ")";
EXECUTE STATEMENT Sql;
END


 
turbouser ©   (2010-01-17 22:28) [8]


> sniknik ©   (16.01.10 23:59) [6]

Ясно :)

> Виталий Панасенко   (17.01.10 08:34) [7]

EXECUTE STATMENT весьма в специфических ситуациях требуется..
я использовал, каюсь.. ввиду недальновидного проектирования.. как временное решение..
то, что у автора - > У меня просто поля в таблицу добавляются в программе пользователем

- вообще бред чистой воды (врятли разработчики у него в пользователях :) )
и советовать такой способ - ставить человека на изначально неверный путь.


 
dest81   (2010-01-17 23:58) [9]


> Виталий Панасенко


большое спасибо - самое оно!!!


> turbouser


> - вообще бред чистой воды (врятли разработчики у него в
> пользователях :) )

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


 
sniknik ©   (2010-01-18 00:13) [10]

> у тебя что, никогда в программе ненадо было добавлять типизированные столбцы, с последущей ихней обработкой?
обычно структура базы/таблиц известна на этапе разработки, и не требуется никаких ухищрений типа обработки неизвестно чего. это только при ошибках проектирования частая вещь.


 
turbouser ©   (2010-01-18 01:11) [11]


> dest81   (17.01.10 23:58) [9]


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

Никогда. За уже 19 лет. Ни разу.


 
turbouser ©   (2010-01-18 01:13) [12]


> turbouser ©   (18.01.10 01:11) [11]


> 19

10 :)


 
Германн ©   (2010-01-18 01:21) [13]


> sniknik ©   (18.01.10 00:13) [10]
>
> обычно структура базы/таблиц известна на этапе разработки

Но иногда нужно добавлять столбцы в таблицу. И иногда удалять столбцы. Но вполне хватало ALTER TABLE. А последующая обработка уже производилась с конкретным именем поля.


 
turbouser ©   (2010-01-18 01:34) [14]


> Германн ©   (18.01.10 01:21) [13]


> Но иногда нужно добавлять столбцы в таблицу. И иногда удалять
> столбцы

иногда


 
Германн ©   (2010-01-18 01:51) [15]


> turbouser ©   (18.01.10 01:34) [14]
>
>
> > Германн ©   (18.01.10 01:21) [13]
>
>
> > Но иногда нужно добавлять столбцы в таблицу. И иногда
> удалять
> > столбцы
>
> иногда
>

Естественно иногда.


 
Евгений Викторович   (2010-01-19 18:39) [16]

Поддерживаю граждан, заявляющих, что автор вопроса неправильно работает с БД



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

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

Наверх





Память: 0.49 MB
Время: 0.003 c
2-1304775275
Alexlafa
2011-05-07 17:34
2011.09.11
Программирование базы данных MS Access в Delphi 7


15-1305643952
makvell
2011-05-17 18:52
2011.09.11
Меню форумов


15-1306096195
Юрий
2011-05-23 00:29
2011.09.11
С днем рождения ! 23 мая 2011 понедельник


15-1305356058
RGV
2011-05-14 10:54
2011.09.11
Скорость отправки письма через почтовый клиент


15-1306184686
R_R
2011-05-24 01:04
2011.09.11
Как в delphi одинарную ковычку вставить в строку?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский