Главная страница
    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.46 MB
Время: 0.007 c
7-21833
Друпи
2002-09-03 23:18
2002.11.07
Привязка программы к компьютеру


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


14-21799
copyr25
2002-10-19 13:43
2002.11.07
Несколько дней тому назад, забросив все остальное, срочно


14-21809
Прафисианал
2002-10-19 17:02
2002.11.07
Восстановление поврежденной базы


1-21603
Stream2k
2002-10-25 18:40
2002.11.07
Как по нажатию SpeedButton загрузщить файл file1.htm в браузер...





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