Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TADOStoredProc как правильно? [D5]


Прямой ©   (2003-12-18 14:24:00) 

БД Oracle 8.1.7
MyStoredProc1[0]:=TADOStoredProc.Create(nil);
MyStoredProc1[0].Connection:=ADOConnection1;
MyStoredProc1[0].ProcedureName:="INS";
Вариант1
MyStoredProc1[0].Parameters.Clear;
MyStoredProc1[0].Parameters.AddParameter;
MyStoredProc1[0].Parameters[0].DataType:=ftString;
MyStoredProc1[0].Parameters[0].Value:="КАКА";
Вариант2
MyStoredProc1[0].Refresh;
MyStoredProc1[0].ParametersюParamByName("NAME").DataType := ftString;
MyStoredProc1[0].Parameters.ParamByName("NAMEFILE1").Value:="КАКА";
Второй вариант работает с "матом"(ваще не работает).
А как нужно правильно? Мне желательно указывать имя передаваемой переменной, чем индекс параметра.


Прямой   (2003-12-18 15:07:00) [1]

Постараюсь ещё раз.
Если кинуть на форму компоненты ADOConnection1, ADOStoredProc1,
В RunTime Приконнектиться к базе. Далее
ADOStoredProc1.Parameters.ParamByName("ddd").DataType := ftInteger;
ADOStoredProc1.Parameters.ParamByName("ddd").Value:= 15;
ADOStoredProc1.ExecProc;
Работает я доволен!
Но если создаешь в RunTime
MyStoredProc1[0]:= TADOStoredProc.Create(nil);
И так далее, то не работает, вопрос: -Как правильно?


Johnmen   (2003-12-18 14:57:00) [2]

Тогда сначала почитай
http://ln.com.ua/~openxs/articles/smart-questions-ru.html


Семен Сорокин   (2003-12-18 14:56:00) [3]

рабочий вариант:
FspArr.Connection := FConn;
FspArr.ProcedureName := "spInformtelArr";
FspArr.Parameters.CreateParameter("@RETURN_VALUE", ftInteger, pdReturnValue, 10, 0);
FspArr.Parameters.CreateParameter("@cDTA", ftDateTime, pdInput, 0, 0);


sniknik   (2003-12-18 14:56:00) [4]

а с чего решил что NUMERIC в Oracle это целое?

сам не знаю про Oracle но в access -
Тип NUMERIC отныне не является синонимом типов FLOAT или DOUBLE. Тип NUMERIC теперь используется как синоним типа DECIMAL
а
DECIMAL - 17 байтов -
Тип данных для хранения точных числовых значений от -10^28 - 1 до 10^28 - 1. Точность (1 - 28) и фактор масштабирования (от 0 до заданной точности) определяются пользователем. По умолчанию точность и фактор масштабирования равны соответственно 18 и 0.


т.е. это дробное число представлено целым, точность после запятой задается.
ftBCD ближе всего.

жестокая правда. граблей на которые можно все свалить нет... ;о))))


Прямой   (2003-12-18 14:54:00) [5]

Не пил, не курил и т.п.


Johnmen   (2003-12-18 14:47:00) [6]

Сколько принял ?
:)


Прямой   (2003-12-18 14:39:00) [7]

В хранимой процедуре передаваемый параметр тип NUMERIC
Если явно не указать тип ftInteger, по умолчанию ставиться тип ftBCD, ну наверное грабли очевидны?


Johnmen   (2003-12-18 14:31:00) [8]

Какое значение дашь параметру, так он и будет работать ...
:))))))))))))


Наверх

Титульная страница Поиск, карта сайта Написать письмо