Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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
1-65003
@andrew
2002-06-08 13:39
2002.06.20
ПРИВЕТ ВСЕМ!!! Как мне зная УРЛ вернуть содержание страницы?


4-65275
Shiza
2002-04-17 20:20
2002.06.20
Работа с оборудованием


1-64999
Magic
2002-06-06 14:27
2002.06.20
Много-много картинок!!!


3-64931
BigMel
2002-05-27 11:57
2002.06.20
Подскажите, как в DbGrid обращаться к конкретным рядам?


7-65259
UsEr
2001-12-26 11:45
2002.06.20
Добавление информации во вкладку





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