Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
ВнизКак передать в Хранимую процедуру параметр=null Найти похожие ветки
← →
pic509 © (2006-08-29 16:37) [0]Люди, помогите! Необходимо передавать параметры в ХП, в том числе параметр может быть null.
← →
Ega23 © (2006-08-29 16:38) [1]
Print "S_TGUIEventHintProps - процедура для работы с настройками инструкций оператору АРМ на события"
go
if exists (select * from sysobjects where id = object_id(N"[S_TGUIEventHintProps]") and OBJECTPROPERTY(id, N"IsProcedure") = 1)
drop procedure [S_TGUIEventHintProps]
GO
CREATE PROCEDURE S_TGUIEventHintProps
@ActNam varchar(32)="NONE",
@ObjID int=-1,
@ObjOwner int =NULL,
@ObjNam varchar(64)="",
@ObjLab varchar(64)="",
@ObjOrd int =-1,
@ObjMsk tinyint =255,
@ObjNot varchar(255)="",
@ObjStat int =0,
@GUICTop int =-1,
@GUICLeft int =-1,
@GUICWidth int =-1,
@GUICHeight int =-1,
@GUICAnchors int =-1,
@GUICAlign int =-1,
@DSCod int =NULL,
.......
← →
pic509 © (2006-08-29 16:45) [2]Да, но как из Делфи передать параметр = null, если он, к примеру, Integer?
Если делать так:
DataForm.StoredProc1.ParamByName("@param1").AsInteger=Null
не работает - говорит, что несоотвествие типов, если вообще этот параметр пропустить - говорит, что не хватает параметров. Как быть?
← →
Ega23 © (2006-08-29 16:46) [3]
> DataForm.StoredProc1.ParamByName("@param1").AsInteger=Null
DataForm.StoredProc1.ParamByName("@param1").Value:=null;
← →
Ega23 © (2006-08-29 16:47) [4]Короче, смотри работу с типом Variant.
← →
pic509 © (2006-08-29 16:55) [5]не работает:
DataForm.StoredProc1.ParamByName("@param1").Value:=null;
← →
Desdechado © (2006-08-29 16:57) [6]Params[0].Clear;
ЗЫ а @ точно нужен в имени параметра???
← →
pic509 © (2006-08-29 17:27) [7]@param1 - так описан входной параметр у ХП.
← →
Ega23 © (2006-08-29 17:27) [8]А почему не
DataForm.StoredProc1.ParamByName("param1").Value:=null;
?
← →
pic509 © (2006-08-29 18:03) [9]Делфи воспринимает нормально, но при выполнении ExecProc выскакивает сообщение о нехватке входных параметров, т.е. параметр не передается.
← →
ANB © (2006-08-29 18:06) [10]
> pic509 © (29.08.06 18:03) [9]
А запости ка весь код и заодно код хранимки
← →
saxon (2006-08-29 19:24) [11]Сделай по дефаулту параметр (в ХП) = null, и вообще ничего не передавай (если Delphi не поругает), или Value:=null
← →
Reindeer Moss Eater © (2006-08-29 19:39) [12]ParamByName("paramname").Clear;
← →
evvcom © (2006-08-30 10:20) [13]> [8] Ega23 © (29.08.06 17:27)
Потому что это MSSQL. У него имена параметров на @ начинаются.
← →
Ega23 © (2006-08-30 10:23) [14]
> Потому что это MSSQL. У него имена параметров на @ начинаются.
>
>
Представь себе, мне это прекрасно известно. А в TStoredProc надо именно полное имя параметра указывать? С "собакой"? Или всё-таки без?
Просто я этой дрянью (TStoredProc) последний раз лет 6 назад пользовался.
← →
evvcom © (2006-08-30 10:37) [15]> [14] Ega23 © (30.08.06 10:23)
Именно с собакой
← →
Ega23 © (2006-08-30 10:41) [16]
> Именно с собакой
Ну может быть, может быть... Всё равно не пользуюсь...
← →
Val © (2006-08-30 11:54) [17]Кстати, а если не передавать параметра вообще в случае с null, разве не пойдет от компонетнта null в параметр, по умолчанию?
← →
Ega23 © (2006-08-30 12:03) [18]см. [1], там жирным выделено.
← →
Desdechado © (2006-08-30 12:03) [19]> разве не пойдет от компонетнта null в параметр, по умолчанию?
VarIsEmpty, VarIsNull, VarIsClear
почитай про варианты
← →
Val © (2006-08-30 12:09) [20]>18,19
не о том.
на сервере процедура с тремя параметрами.
создаем tstoredproc, передаем два первых. execute.
← →
Ega23 © (2006-08-30 12:15) [21]
> на сервере процедура с тремя параметрами.
> создаем tstoredproc, передаем два первых. execute.
Ещё раз: что мешает задать параметр по-умолчанию непосредственно в ХП?
← →
Val © (2006-08-30 12:17) [22]>[21] Ega23 © (30.08.06 12:15)
кто сказал что он должен быть null по умолчанию в хп?
← →
saxon (2006-08-30 12:31) [23]
> Val © (30.08.06 12:09) [20]
Умолчание дает возможность сделать ->
> Val © (30.08.06 12:17) [22]
а null - это как вариант, и только.
← →
Ega23 © (2006-08-30 12:32) [24]
> кто сказал что он должен быть null по умолчанию в хп?
>
Тогда я вообще ничего не понимаю.
Приведи заголовок ХП и код по формированию TStoredProc на клиенте.
← →
saxon (2006-08-30 12:33) [25]Что то <цитата> сглючила.
Конечно их (цитаты) надо поменять местами.
← →
Val © (2006-08-30 12:48) [26]Коллеги, что-то мы не поймем друг друга.
Все мы понимаем, что в хп параметр со значением по умолчанию и без него - вещи разные принципиально.
Я НЕ знаю нужен ли автору ветки параметр в хп со значением по умолчанию. Если нужен, то конечно, логично воспользоваться советом Ega23 ©.
Если же ему просто нужно передать в параметр хп с клиента значение null с помощью TStoredProc, я предлагаю, как вариант, еще не перечисленный среди прочих в данной ветке, попробовать просто не инициализировать его на клиете вообще. Я пользуюсь таким методом в нашем рабочем проекте давно и часто, НО наш аналог TStoredProc несколько видоизменен, что произойдет при опускании инициализации параметра на клиенте в случае с оригинальным TStoredProc я _не помню_ - то ли при Execute он выругается на отсутствие параметра, то ли передаст null в ХП. Это я и предлагаю автору проверить.
← →
pic509 © (2006-08-30 17:28) [27]СПАСИБО! Все заработало! Видимо Делфи глючила!
Заработало как писал Ega23: проинициализировал в заголовке ХП нужный параметр = null, а при вызове из Делфи этот параметр просто пропускал.
← →
Ega23 © (2006-08-30 17:30) [28]
> Видимо Делфи глючила!
Сомневаюсь... :о)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.076 c