Текущий архив: 2007.03.18;
Скачать: CL | DM;
Вниз
Выполнение процедуры Найти похожие ветки
← →
NigthSkif (2006-12-19 05:50) [0]Доброе время суток. Скажите, что не так. Есть сторапроцедура
CREATE PROCEDURE qqq(@Fam varchar(20), @id_Nam int, @id_Otch int, @id_Dolgn int, @id_Work int, @Comment Comment, @DBirth varchar(10), @Rez int output)
AS
Select @Rez=0
if exists (Select * From dbSotrud
Where (Fam=RTrim(@Fam) and
id_Nam=@id_Nam and
id_Otch=@id_Otch and
id_Dolgn=@id_Dolgn and
id_Work=@id_Work and
Comment=RTrim(@Comment) and
DBirth=@DBirth))
begin
Select @Rez=1
end
Вызываю ее следующим образом
function Prov: Boolean;
begin
with DMsp.spdbSotrud_prov do
begin
ParamByName("@DBirth").AsString := edtDBirth.Text;
ParamByName("@Fam").AsString := edtFam.Text;
ParamByName("@id_Nam").AsInteger := dblcbName.KeyValue;
ParamByName("@id_Otch").AsInteger := dblcbOtch.KeyValue;
ParamByName("@id_Dolgn").AsInteger := dblcbDolgnost.KeyValue;
ParamByName("@id_Work").AsInteger := dblcbWork.KeyValue;
if mmComment.Text = "" then
ParamByName("@Comment").Clear
else
ParamByName("@Comment").Value := mmComment.Text;
Open;
if ParamByName("@Rez").AsInteger = 1 then
Result := True
else
Result := False;
Close;
end;
end;
Вываливается сообщение "Error creating cursor handle" когда я открываю стору.
← →
Кщд © (2006-12-19 08:13) [1]exec
← →
NigthSkif (2006-12-19 09:23) [2]Это не работает. Должно быть именно Open.
← →
Ega23 © (2006-12-19 09:56) [3]
> Это не работает. Должно быть именно Open.
Не работает твоя процедура. Метод Open подразумевает возвращения на клиент RecordSet (можно даже пустой).
RecordSet на клиент возвращается ТОЛЬКО командой Select.
Команды Insert, Update и Delete RecordSet на клиент НЕ ВОЗВРАЩАЮТ.
Чтобы твоя SP заработала, тебе в конце надо добавить строкуCREATE PROCEDURE qqq(@Fam varchar(20), @id_Nam int, @id_Otch int, @id_Dolgn int, @id_Work int, @Comment Comment, @DBirth varchar(10), @Rez int output)
AS
Select @Rez=0
if exists (Select * From dbSotrud
Where (Fam=RTrim(@Fam) and
id_Nam=@id_Nam and
id_Otch=@id_Otch and
id_Dolgn=@id_Dolgn and
id_Work=@id_Work and
Comment=RTrim(@Comment) and
DBirth=@DBirth))
begin
Select @Rez=1
end
Select Result=@Rez
Также, почему-то, не вижу Return
← →
Ega23 © (2006-12-19 09:58) [4]А вообще - это ужасно. Почему Fam=RTrim(@Fam), а не Like ?
← →
User_Name (2006-12-19 14:28) [5]Не пойму, ЗАЧЕМ здесь open нужен :( ведь @Rez определен как output. Ну и делай exec и считывай после этого этот параметр.
← →
Ega23 © (2006-12-19 14:31) [6]
> ведь @Rez определен как output.
Да. Вот только я чё-то не вижу как :Rez определён...
← →
User_Name (2006-12-19 14:54) [7]//offtop
Ну дык между строк надо читать :)
//end offtop
@Rez int output
← →
Ega23 © (2006-12-19 14:56) [8]
> @Rez int output
Это в SP. А в TStoredProc - как?
← →
sniknik © (2006-12-19 15:07) [9]> Ну дык между строк надо читать :)
между строк все пишут абсолютно непогрешимый и правильный код... только не у всех он почемуто работает.
← →
User_Name (2006-12-19 15:19) [10]А что в TStoredProc %( (видно что-то я не понимаю) нету ParamType ptInputOutput. И нельзя сделать :
execproc;
И посмотреть что там в
ParamByName("@Rez").AsInteger
← →
Ega23 © (2006-12-19 15:31) [11]
> А что в TStoredProc %( (видно что-то я не понимаю) нету
> ParamType ptInputOutput. И нельзя сделать :
>
> execproc;
>
> И посмотреть что там в
>
> ParamByName("@Rez").AsInteger
пардон, ты это МНЕ предлагаешь проделать?
← →
User_Name (2006-12-19 15:36) [12]Никому ничего я не предлагаю.
← →
Ega23 © (2006-12-19 16:00) [13]
> Никому ничего я не предлагаю.
А, [10] это автору было? Тогда сорри.
← →
User_Name (2006-12-19 16:39) [14]2 Ega23 © (19.12.06 16:00) [13]
Да, ведь это автору нужно, видно не совсем стилистически правильно написал :(
Страницы: 1 вся ветка
Текущий архив: 2007.03.18;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.03 c