Як передати в збережену процедуру параметр null

Як передати в збережену процедуру параметр = null

Люди, допоможіть! Необхідно передавати параметри в ХП, в тому числі параметр може бути null.


Print # XA0; "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,
.

Так, але як з Делфі передати параметр = null, якщо він, наприклад, Integer?
Якщо робити так:
DataForm.StoredProc1.ParamByName ( "@ param1"). AsInteger = Null
не працює - каже, що несоотвествие типів, якщо взагалі цей параметр пропустити - каже, що не вистачає параметрів. Як бути?

Коротше, дивись роботу з типом Variant.

ЗИ а @ точно потрібен в імені параметра.

@ Param1 - так описаний вхідний параметр у ХП.

А чому не
DataForm.StoredProc1.ParamByName ( "param1"). Value: = null; ?

Делфі сприймає нормально, але при виконанні ExecProc вискакує повідомлення про брак вхідних параметрів, тобто параметр не передається.

Зроби по дефаулту параметр (в ХП) = null, і взагалі нічого не передавай (якщо Delphi не полаявся), або Value: = null


> Тому що це MSSQL. У нього імена параметрів на @ починаються.
>
>

Уяви собі, мені це прекрасно відомо. А в TStoredProc треба саме повне ім'я параметра вказувати? З собакою"? Або все-таки без?
Просто я цією поганню (TStoredProc) останній раз років 6 тому користувався.

Ну може бути, може бути. Все одно не користуюся.

До речі, а якщо не передавати параметра взагалі у випадку з null, хіба не піде від компонетнта null в параметр, за замовчуванням?

см. [1], там жирним виділено.

> # XA0, ще бо не піде від компонетнта null в параметр, за замовчуванням?
VarIsEmpty, VarIsNull, VarIsClear
почитай про варіанти

> 18,19
не про те.
на сервері процедура з трьома параметрами.
створюємо tstoredproc, передаємо два перших. execute.


> На сервері процедура з трьома параметрами.
> Створюємо tstoredproc, передаємо два перших. execute.

Ще раз: що заважає поставити параметр за замовчуванням безпосередньо в ХП?


> Хто сказав що він повинен бути null за замовчуванням в хп?
>

Тоді я взагалі нічого не розумію.
Приведи заголовок ХП і код по формуванню TStoredProc на клієнті.

що то <цитата> сглючіл.
Звичайно їх (цитати) треба поміняти місцями.

ДЯКУЄМО! Все запрацювало! Мабуть Делфі глючила!
Запрацювало як писав Ega23: проініціалізувати в заголовку ХП потрібний параметр = null, а при виклику з Делфі цей параметр просто пропускав.


> Мабуть Делфі глючила!

Схожі статті