if(StoredProcGetID->ParamByName("@TableName")->AsString!="TRIPS")
{
StoredProcGetID->ParamByName("@TableName")->AsString="TRIPS";
StoredProcGetID->ParamByName("@GroupId")->AsInteger=1;
StoredProcGetID->ParamByName("@Res")->AsInteger=1;
StoredProcGetID->Prepare();
}
StoredProcGetID->ExecProc();
return StoredProcGetID->ParamByName("@Res")->AsInteger;
Не работает TStoredProc
Код:
Выдает ошибку: Parameter '@TableName' not found
вот процедура:
Код:
create procedure GetNextID @TableName char(40),@GroupId int,@Res int out AS
begin
declare @NextId Integer
BEGIN TRAN
SELECT @NextId=TblIds.NextId FROM
TblIds (UPDLOCK)
WHERE (TblIds.TableName=@TableName) AND (TblIds.GroupId=@GroupId)
IF @@ROWCOUNT=0
BEGIN
INSERT INTO TblIds (TableName,NextId,GroupId)
SELECT @TableName,KEYVALINT+1,@GroupId FROM SETUP WHERE KEYNAME='FIRSTID'
SELECT @NextId=KEYVALINT FROM SETUP WHERE KEYNAME='FIRSTID'
END
ELSE
UPDATE TBLIDS SET TblIds.NextId=TblIds.NextId+1
WHERE (TblIds.TableName=@TableName) AND (TblIds.GroupId=@GroupId)
COMMIT TRAN
SELECT @Res=@NextId
END
GO
begin
declare @NextId Integer
BEGIN TRAN
SELECT @NextId=TblIds.NextId FROM
TblIds (UPDLOCK)
WHERE (TblIds.TableName=@TableName) AND (TblIds.GroupId=@GroupId)
IF @@ROWCOUNT=0
BEGIN
INSERT INTO TblIds (TableName,NextId,GroupId)
SELECT @TableName,KEYVALINT+1,@GroupId FROM SETUP WHERE KEYNAME='FIRSTID'
SELECT @NextId=KEYVALINT FROM SETUP WHERE KEYNAME='FIRSTID'
END
ELSE
UPDATE TBLIDS SET TblIds.NextId=TblIds.NextId+1
WHERE (TblIds.TableName=@TableName) AND (TblIds.GroupId=@GroupId)
COMMIT TRAN
SELECT @Res=@NextId
END
GO
что я делаю неправильно?
вот пример из Delphi, который работает:
Код:
with GetIdSP do
begin
if ParamByName('@TableName').AsString<>'TRIPS' then
begin
ParamByName('@TableName').AsString:='TRIPS';
ParamByName('@GroupId').AsInteger:=1;
Prepare;
end;
ExecProc;
Result:=ParamByName('@Res').AsInteger;
end;
begin
if ParamByName('@TableName').AsString<>'TRIPS' then
begin
ParamByName('@TableName').AsString:='TRIPS';
ParamByName('@GroupId').AsInteger:=1;
Prepare;
end;
ExecProc;
Result:=ParamByName('@Res').AsInteger;
end;
Код:
if(StoredProcGetID->ParamByName("@TableName")->AsString!="TRIPS")
{
StoredProcGetID->ParamByName("@TableName")->AsString="TRIPS";
StoredProcGetID->ParamByName("@GroupId")->AsInteger=1;
StoredProcGetID->ParamByName("@Res")->AsInteger=1;
StoredProcGetID->Prepare();
}
StoredProcGetID->ExecProc();
return StoredProcGetID->ParamByName("@Res")->AsInteger;
{
StoredProcGetID->ParamByName("@TableName")->AsString="TRIPS";
StoredProcGetID->ParamByName("@GroupId")->AsInteger=1;
StoredProcGetID->ParamByName("@Res")->AsInteger=1;
StoredProcGetID->Prepare();
}
StoredProcGetID->ExecProc();
return StoredProcGetID->ParamByName("@Res")->AsInteger;
Выдает ошибку: Parameter '@TableName' not found
[/QUOTE]
А если так?
Код:
if(StoredProcGetID->Parameters->ParamByName("@TableName")->Value!="TRIPS")
{
StoredProcGetID->Parameters->ParamByName("@TableName")->Value="TRIPS";
StoredProcGetID->Parameters->ParamByName("@GroupId")->Value=1;
StoredProcGetID->Parameters->ParamByName("@Res")->Value=1;
StoredProcGetID->Prepare();
}
StoredProcGetID->ExecProc();
return StoredProcGetID->Parameters->ParamByName("@Res")->Value;
{
StoredProcGetID->Parameters->ParamByName("@TableName")->Value="TRIPS";
StoredProcGetID->Parameters->ParamByName("@GroupId")->Value=1;
StoredProcGetID->Parameters->ParamByName("@Res")->Value=1;
StoredProcGetID->Prepare();
}
StoredProcGetID->ExecProc();
return StoredProcGetID->Parameters->ParamByName("@Res")->Value;
...Выдает ошибку: Parameter '@TableName' not found...
[/QUOTE]
а параметры не забыл продекларировать в экранке ?
в общем так тоже не работает, ошибка на этапе компиляции
не понял что это значит...
-это значит, что необходимо для компонента хранимой процедуры настроить описание параметров (наименования, типы, размеры и т.п.)
либо дизайнером форм, либо на этапе выполнения
либо дизайнером форм, либо на этапе выполнения[/QUOTE]
Спасибо, все получилось.