Форум: "Базы";
Текущий архив: 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