![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не желает выполнятся запрос через Query [MSSQL]
miau © (2010-01-18 12:46:00)Вот так выглядит код в Delphi
with TADOQuery.Create(nil) do try
Connection:=adcMain;
SQL.Clear;
SQL.Add('exec ACCOUNT_WORK_TIME_SAVE');
SQL.Add(' @ACCOUNT_ID = '+IntToStr(ID)+',');
SQL.Add(' @XML = '''+StringReplace(s,'''','''''',[rfReplaceAll])+'''');
ExecSQL;
finally
Free;
end;
Вот так выглядит текст запроса:
exec ACCOUNT_WORK_TIME_SAVE
@ACCOUNT_ID = 219188,
@XML = '
<ROOT>
<mdsWT
RecId="1"
ID="5"
ACCOUNT_WORK_MECH_ID="913836"
DATE_START="20091231 00:00:00"
DATE_END="20100115 18:27:00"
DATE_WRITE="20100115 18:37:07"/>
</ROOT>
'
Вот так выглядит хранимая процедура:
create procedure ACCOUNT_WORK_TIME_SAVE
@ACCOUNT_ID int,
@XML text
as
...
/*вызовов других процедур и функций здесь нет*/
...
GO
Собственно вопрос:
При выполнении кода возникает ошибка "неправильно определён объект Parametr. Предоставлены неполные или несовместимые данные.", но при прогоне запроса в Query Analyzer всё отрабатывает нормально. Где я туплю, подскажите пожалуйста?
sniknik (2010-01-18 13:23:00) [1]> Слушай, а для XML какой тип параметра надо по-идее использовать? Для MSSQL + ADO?
строка, до 4кб. вроде... других нет (в смысле text), или вайдстринг до 2гиг, но 2000й не понимает (опить насколько помню). (т.е. зависит от сервера)
> Но не ожидал такой пакости от дельфей...
это не пакость, это удобство... в случае когда тебе это нужно, а когда нет то можно отключить.
а еще лучше как говорил уже использовать правильно, будет "удобочитеемей", и без подобных проблем.
miau (2010-01-18 13:18:00) [2]Использовать параметры правильным образом я боюсь после того, как дельфа стала съедать время от времени часть их длины. Именно поэтому я использую Query, а не StoredProc.
miau (2010-01-18 13:14:00) [3]Спасибо!
Всё получилось. Вы меня спасли :)
Но не ожидал такой пакости от дельфей...
Ega23 (2010-01-18 13:13:00) [4]
> хотя нет, лучше не отключать, а использовать параметры,
> правильным образом вместо подстановок как у тебя .
Слушай, а для XML какой тип параметра надо по-идее использовать? Для MSSQL + ADO?
Ega23 (2010-01-18 13:12:00) [5]Даже так:
with TADOCommand.Create(nil) do try
ParamCheck := False;
CommandText := '......'
Connection:=adcMain;
Execute;
finally
Free;
end;
sniknik (2010-01-18 13:11:00) [6]> отключи авто определение.
хотя нет, лучше не отключать, а использовать параметры, правильным образом вместо подстановок как у тебя .
Ega23 (2010-01-18 13:09:00) [7]
with TADOQuery.Create(nil) do try
ParamCheck := False;
Connection:=adcMain;
SQL.Text := '.........';
ExecSQL;
finally
Free;
end;
sniknik (2010-01-18 13:07:00) [8]в дельфи (BDE/ADO) авто определение параметров использует знак ":"
вот введи все это в дизайн тайм и проверь что там получилось по параметрам.
отключи авто определение.