Форум: "Базы";
Текущий архив: 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