![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Firebird set <параметр>='значение' [D7, IB6.x]
dest81 © (2010-01-16 22:35:00)Можно ли как-то сделать что-то типа этого:
update table1 set :param=10 where ...
Тоесть я хочу задать поле через переменную
Евгений Викторович (2010-01-19 18:39:00) [1]Поддерживаю граждан, заявляющих, что автор вопроса неправильно работает с БД
Германн (2010-01-18 01:51:00) [2]
> turbouser © (18.01.10 01:34) [14]
>
>
> > Германн © (18.01.10 01:21) [13]
>
>
> > Но иногда нужно добавлять столбцы в таблицу. И иногда
> удалять
> > столбцы
>
> иногда
>
Естественно иногда.
turbouser (2010-01-18 01:34:00) [3]
> Германн © (18.01.10 01:21) [13]
> Но иногда нужно добавлять столбцы в таблицу. И иногда удалять
> столбцы
иногда
Германн (2010-01-18 01:21:00) [4]
> sniknik © (18.01.10 00:13) [10]
>
> обычно структура базы/таблиц известна на этапе разработки
Но иногда нужно добавлять столбцы в таблицу. И иногда удалять столбцы. Но вполне хватало ALTER TABLE. А последующая обработка уже производилась с конкретным именем поля.
turbouser (2010-01-18 01:13:00) [5]
> turbouser © (18.01.10 01:11) [11]
> 19
10 :)
turbouser (2010-01-18 01:11:00) [6]
> dest81 (17.01.10 23:58) [9]
> у тебя что, никогда в программе ненадо было добавлять типизированные
> столбцы, с последущей ихней обработкой?
Никогда. За уже 19 лет. Ни разу.
sniknik (2010-01-18 00:13:00) [7]> у тебя что, никогда в программе ненадо было добавлять типизированные столбцы, с последущей ихней обработкой?
обычно структура базы/таблиц известна на этапе разработки, и не требуется никаких ухищрений типа обработки неизвестно чего. это только при ошибках проектирования частая вещь.
dest81 (2010-01-17 23:58:00) [8]
> Виталий Панасенко
большое спасибо - самое оно!!!
> turbouser
> - вообще бред чистой воды (врятли разработчики у него в
> пользователях :) )
у тебя что, никогда в программе ненадо было добавлять типизированные столбцы, с последущей ихней обработкой?
turbouser (2010-01-17 22:28:00) [9]
> sniknik © (16.01.10 23:59) [6]
Ясно :)
> Виталий Панасенко (17.01.10 08:34) [7]
EXECUTE STATMENT весьма в специфических ситуациях требуется..
я использовал, каюсь.. ввиду недальновидного проектирования.. как временное решение..
то, что у автора - > У меня просто поля в таблицу добавляются в программе пользователем
- вообще бред чистой воды (врятли разработчики у него в пользователях :) )
и советовать такой способ - ставить человека на изначально неверный путь.
Виталий Панасенко (2010-01-17 08:34:00) [10]В 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
sniknik (2010-01-16 23:59:00) [11]> меня не интересует 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''' т.к. значения переменной мы не задавали)
вот я и говорю на это они похоже "забили" если реализовали то сомнительное удобство с макросами про которое ты сказал.
dest81 (2010-01-16 23:39:00) [12]меня не интересует fib+, мне бы надо в процедуре firebird-а. У меня просто поля в таблицу добавляются в программе пользователем, а процедура должна заполнять эти поля, а как их заполнять если я еще не знаю их имени ???...
Неужели ни у кого не было такой ситуации???
sniknik (2010-01-16 23:31:00) [13]> Не понял
это переменная, если у нее тип аутпут и ей что то присвоить, то это что то можно получить из нее "снаружи", не обязательно рекордсет ради одного значения возвращать... а если переменную заменить подстановкой значения, ради совершенно не принятой цели, то как вернуть в ней значение? (кстати задокументированная возможность)
в общем если поменять переменную на подстановку ее значения то это уже перестает быть переменной...
turbouser (2010-01-16 22:50:00) [14]
> sniknik © (16.01.10 22:44) [2]
Там сделано что-то типа макросов.
> или на эту вполне стандартную возможность переменных они
> "забили"?
Не понял
sniknik (2010-01-16 22:44:00) [15]> В компонентах fib+ по моему можно так
а как тогда, в них возвращается значение через параметр? или на эту вполне стандартную возможность переменных они "забили"?
turbouser (2010-01-16 22:40:00) [16]В общем случае - нет.
В компонентах fib+ по моему можно так