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

Вниз

Передача параметра по default   Найти похожие ветки 

 
Дуся ©   (2002-10-18 10:19) [0]

ПОМОГИТЕ!.. Умаялась совсем. Можно ли используя стандартные компоненты ADO организовать вызов процедуры так, чтобы командная строка выглядела как "имя_процедуры парам1, парам2, DEFAULT".?? То есть как сделать вызов со значением параметра default?? По умолчанию он передает NULL, что мне совсем не нужно.. :(


 
sniknik ©   (2002-10-18 10:46) [1]

можно наверно функцией самого MSSQL воспользоватся
поставить в 3 параметр ISNULL(check_expression , replacement_value)
:check_expression будет переменной которую ты передаеш не передаш будет нил и возьмет replacement_value куда забьеш значение по умолчанию.

может не самый элегантный способ но работать должен проверь.



 
Adony   (2002-10-18 10:58) [2]

В TParameters в поле Value можно прописать значения, которые будут использоваться по умолчанию


 
Дуся ©   (2002-10-18 13:59) [3]

2 sniknik ©
это надо на каждый параметр в процедуре писать. Совсем "не элегантно"...



2 Adony

Чтобы это сделать, надо знать в ходе выполнения, что за значения там по умолчанию. А у меня оно ТОЛЬКО в процедуре прописано, и программа о нем знать не обязана...


 
Андрей Прокофьев ©   (2002-10-18 14:04) [4]

Вот так (T-SQL)

CREATE PROCEDURE BlaBlaBla
@OBJCLASS CHAR(3),
@OBJID INT,
@PacketID INT =-1
AS




 
Дуся ©   (2002-10-18 14:18) [5]


2 Андрей Прокофьев

Спасибо конечно, но синтаксис T-SQL я и сама прекрасно знаю.

Но ТОЛКУ от такого синаксиса - НОЛЬ без палочки, если параметру передается значение NULL, а оно передается всегда когда по умолчанию Value = Unassigned



 
Андрей Прокофьев ©   (2002-10-18 14:20) [6]

Сделайте перед вызовом
ADOProc.Parameters.Refresh;
Может, поможет.


 
Дуся ©   (2002-10-18 14:25) [7]

Вот именно из-за рефреша, который я делаю, у меня эта проблема и появляется.

В список параметров попадают все параметры из процедуры, которые в ней есть. Включая те, к которым я не обращаюсь и которые передавать не хочу. Вот они-то по дефолту и должны быть переданы, а похоже что в borlandовской реализации ADO этого не умеет....

Нет ли чего-то типа EmptyParam ???


 
sniknik ©   (2002-10-18 14:29) [8]

А процедура тоже твоя? перенеси ISNULL в начало и не мучайся с передачей.


 
Андрей Прокофьев ©   (2002-10-18 14:38) [9]

Напишите такую процедуру

CREATE PROCEDURE PTEST
@P1 INT,
@P2 INT = 2,
@P3 CHAR(3) = "YES"
AS
SELECT @P1, @P2, @P3
GO

И ее вызов в Delphi

Self.ADOStoredProc1.Parameters.Refresh;
Self.ADOStoredProc1.Parameters.ParamByName("@P1").Value := -1;
Self.ADOStoredProc1.Open;

И посмотрите, что вернется в выборке

У меня (D6) результат rowset 1, 2, "YES"
все, что UnAssigned как раз и заменяется на Default значения



 
Дуся ©   (2002-10-18 14:55) [10]

ЧУДЕСА!!!!!...

Действительно. И вызов такой как надо!..

Чего же у меня в том коде не заработало?!. :(

Спасибо.

Я Вам тоже жем-нибудь пригожусь :)



Страницы: 1 вся ветка

Текущий архив: 2002.11.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
1-21561
Tornado
2002-10-29 09:02
2002.11.07
Изменение размеров формы


14-21779
Alex33
2002-10-19 02:56
2002.11.07
Люди,где взять исходники к ACDSee?????????


14-21802
D_B
2002-10-17 08:59
2002.11.07
Что за профессия - эникейщик ?


1-21544
BIN
2002-10-28 17:14
2002.11.07
Одноэкземплярное прилрожение


4-21867
dr.karter
2002-09-25 15:19
2002.11.07
Вопрос о TaskBar (Это там где находится Пуск?)