Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.29;
Скачать: CL | DM;

Вниз

Как передать в Хранимую процедуру параметр=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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.056 c
3-1156829716
Orxan
2006-08-29 09:35
2006.10.29
Юникоды и компонент TOracleQuery


15-1160573296
Rule
2006-10-11 17:28
2006.10.29
Подскажите пожалуйста где взять формальную граматику T-SQL(MSSQL)


15-1160123305
Курдль
2006-10-06 12:28
2006.10.29
Настройки ODBC "Delphi applications" Кто нибудь пользовался?


1-1158389655
mefodiy
2006-09-16 10:54
2006.10.29
Перехват нажатия кнопок pgup и pgdn формой, а не combobox


6-1149542592
CShooter
2006-06-06 01:23
2006.10.29
NMpop31.GetMailMessage(NMpop31.MailCount) выдает ERangeError