Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];

Вниз

Передача параметра по 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.011 c
1-21563
SergeiIzhevsk
2002-10-29 17:03
2002.11.07
Нужен компонент


14-21791
Paha_pmk
2002-10-19 13:56
2002.11.07
Как в делфи 6.0 сохранить проект как для делфи 5.0 ???


4-21858
d-coder
2002-09-24 03:12
2002.11.07
Так знает кто-нибудь ответ?????


6-21712
samson
2002-09-04 19:48
2002.11.07
Модемное соединение


1-21573
some
2002-10-25 16:35
2002.11.07
Handle формы





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