Форум: "Базы";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];
ВнизПередача параметров в TADOAtoredProc - HELP!! Найти похожие ветки
← →
Дуся (2002-05-27 16:59) [0]Не будут ли любезны уважаемые мастера, общавшиеся с ADO, поделиться, всегда ли оно (он?) при вызове процедуры передает параметры в нее последовательно? то есть вызов идет вида
exec <имя процедуры>;1 "параметр1", "параметр2", 4312., 0
а не по имени, как было в почившем BDE:
exec <имя процедуры>;1 @parm1="параметр1", @parm2="параметр2", @parm3=4312, @parm4=0
← →
Дуся (2002-05-27 17:46) [1]Ну неужели никто не пробовал передавать параметры независимо от последовательности указания их в процедуре?..
← →
DmitryK (2002-05-27 18:27) [2]вообще-то в Дельфи можно передовать параметры по именам в АДОпроцедуры
ADOStoredProc.Parameters.ParamValue[Name]:=VariantData
если неошибаюсь так (или посмотри по хелпу)
← →
Дуся (2002-05-27 18:33) [3]Это само собой, это я так и делаю:
ADOStoredProc.Parameters.ParamByName("name").Value := value
Однако при исполнении процедуры (ADOStoredProc.Open
) она шлет запрос на SQL именно указанного выше вида, т.е. порядок параметров увы! имеет значение. Что не есть хорошо. Совсем то есть не хорошо, для меня по крайней мере.
← →
DPetrovich (2002-05-27 18:52) [4]Дуся, а какое, если не секрет, имеет значение порядок?
← →
DPetrovich (2002-05-27 18:54) [5]В смысле, для Вас, по крайней мере...
← →
Дуся (2002-05-27 19:02) [6]Вовсе не секрет. Например: на SQL есть процедура:
CREATE PROCEDURE dbo.sp_do_something
@parm1 float = 0.5,
@parm2 char(1)
AS
SELECT "Oppla!"
GO
Как видно, второй параметр имеет дефолт-значение, т.е. я его могу вообще не передавать и не знать о его существовании. Однако, в описанном мной случае, я вынуждена его тоже указывать, иначе ничего не получится. Таким образом, исправление процедуры влечет за собой неизбежное исправление Delpi-кода, что сами понимаете - просто аццтой.
:)
← →
DPetrovich (2002-05-27 19:11) [7]Дуся, чё-то я не пойму проблему...
Причём тут последовательность параметров?
Ежели вы хотите что бы а процедуре использовалось дефолт-значение, то не присваивайте ентому параметру значение в Делфи... почему не получается не указывать-то?
← →
Дуся (2002-05-27 19:19) [8]Да потому что моя программа все равно должна знать о существовании этого параметра, чтобы "не указать" в нем значение!!.. А на этапе создания она может этого и не знать. Плюс, если не присваивать значение, то все равно передается NULL, а это согласитесь не то же самое что брать дефолт...
Может, я неясно выражаюсь?
← →
DPetrovich (2002-05-27 19:32) [9]Дуся, чё-то я не пойму проблему...
Причём тут последовательность параметров?
Ежели вы хотите что бы а процедуре использовалось дефолт-значение, то не присваивайте ентому параметру значение в Делфи... почему не получается не указывать-то?
← →
DPetrovich (2002-05-27 19:39) [10]Дуся, "не знать" программа не может... Если Вы добавляете параметр, то должны добавить его в свойстве TADOStoredProc.Parametrs ...
А на счёт дефолт, на сколько я понимаю оно берётся как раз в случае если значение пришло null...
← →
jonik pegas (2002-05-28 08:51) [11]DPetrovich ©, Дуся © права права такое поведение ADO-зависимость передачи параметров от их порядка следования в хранимой процедуре не есть совсем хорошо.
← →
Zemal (2002-05-28 09:42) [12]Угу... я с вами тоже согласен... эти разработчики из Microsoft... полный отстой... кто писал эту библиотеку OLE DB, которую инкапсулируют ADO-компоненты?! Кстати, в ранних версиях OLE DB (ADO) таких проблем не было... я точно помню... а щас появились... и у меня тоже... отстооооой! Программеры из Мелкософта! Ау! Мать вашу! Вы что так переделываете концепции своих COM-объектов?! А как же мы?!
А... всё-равно не услышат... дорогие прикладные программисты... мой вам совет: пишите и тестируйте свои программы для одной версии "винды"... и работают они пускай под оной... только в таком случае проблем не будет :(... вот... ;(
← →
Дуся (2002-05-28 09:43) [13]2DPetrovich © : Вы видимо мало имели дело с MS SQL.. null - это null, а дефолт берется в случае вообще неуказания параметра.
2jonik pegas ©: И что, неужели нет выхода?? Может, переписать компонент??.. Как он формирует командную строку?
← →
Zemal (2002-05-28 09:45) [14]P.S. Или есть вариант: пишите свой набор COM-компонентов и работайте через них... в основном все хорошие программы именно так пишутся... только вот правильно написать COM-объект это будет посложнее, чем написать приложение для работы с БД. :)
← →
Zemal (2002-05-28 09:49) [15]Дуся... дорогая... переписывай или не переписывай компонент... это не играет роли... у тебя наверное винда 2000 стоит... с сервпаками :)... так что переписывать придётся COM-объект... вот :(... так нас кинул мелкософт, всемирная история сберкассы и т.д.... история продолжается :(...
← →
Дуся (2002-05-28 11:40) [16]Спасибо.. Видимо придется смириться или как-то динамически извращаться с получением набора параметров... Потому что переписывание COM-объекта в моем случае - стрельба по воробьям из пушки.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2002.06.20;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c