Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Не работает TStoredProc

17K
20 июля 2006 года
Chernov
9 / / 20.07.2006
 
Код:
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;

Выдает ошибку: 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


что я делаю неправильно?

вот пример из 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;
315
20 июля 2006 года
Nick_M
399 / / 29.05.2003
[QUOTE=Chernov]
 
Код:
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;

Выдает ошибку: 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;
7.8K
20 июля 2006 года
DrCoder
106 / / 27.01.2006
[QUOTE=Chernov]
...Выдает ошибку: Parameter '@TableName' not found...
[/QUOTE]
а параметры не забыл продекларировать в экранке ?
17K
20 июля 2006 года
Chernov
9 / / 20.07.2006
[C++ Error] MainForm.cpp(336): E2015 Ambiguity between '_fastcall Variant::operator wchar_t *() const' and '_fastcall Variant::operator wchar_t * *()'
в общем так тоже не работает, ошибка на этапе компиляции
17K
20 июля 2006 года
Chernov
9 / / 20.07.2006
[QUOTE=DrCoder]а параметры не забыл продекларировать в экранке ?[/QUOTE]
не понял что это значит...
7.8K
20 июля 2006 года
DrCoder
106 / / 27.01.2006
[QUOTE=Chernov]не понял что это значит...[/QUOTE]
-это значит, что необходимо для компонента хранимой процедуры настроить описание параметров (наименования, типы, размеры и т.п.)
либо дизайнером форм, либо на этапе выполнения
17K
20 июля 2006 года
Chernov
9 / / 20.07.2006
[QUOTE=DrCoder]-это значит, что необходимо для компонента хранимой процедуры настроить описание параметров (наименования, типы, размеры и т.п.)
либо дизайнером форм, либо на этапе выполнения[/QUOTE]
Спасибо, все получилось.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог