Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.09.11;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.007 c
6-1235892446
Vladimir
2009-03-01 10:27
2011.09.11
TSocketClient и TSocketServer работа с потоками


1-1264840225
tek
2010-01-30 11:30
2011.09.11
Как можно нарисовать progress bar в dbgrid е ?


15-1305963731
bss
2011-05-21 11:42
2011.09.11
Архив ТВ-программ


2-1306741847
ixen
2011-05-30 11:50
2011.09.11
Dataset.Filter


3-1263670520
dest81
2010-01-16 22:35
2011.09.11
Firebird set <параметр>= значение