powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Получить параметры ХП
25 сообщений из 27, страница 1 из 2
Получить параметры ХП
    #38976330
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть ХП

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
SET TERM ^ ;
CREATE PROCEDURE SP_CUSTOMER_SAVE (
    PCST_ID Varchar(50),
    PCST_NO Integer,
    PCST_NAME Varchar(250),
    PCST_STR_ID Varchar(50),
    PCST_HOUSE Varchar(250),
    PCST_APT Varchar(10),
    PCST_STATUS Integer,
    PCST_MEMO Blob sub_type 1 )
AS
BEGIN
   
    IF (EXISTS(SELECT CST_ID FROM TB_CUSTOMERS WHERE CST_ID = :PCST_ID)) THEN BEGIN
      UPDATE TB_CUSTOMERS SET CST_NAME = :PCST_NAME, CST_STR_ID = :PCST_STR_ID, CST_HOUSE = :PCST_HOUSE, CST_APT = :PCST_APT, CST_STATUS = :PCST_STATUS, CST_MEMO = :PCST_MEMO
      WHERE CST_ID = :PCST_ID;
    END ELSE BEGIN
      INSERT INTO TB_CUSTOMERS (CST_ID, CST_NO, CST_NAME, CST_STR_ID, CST_HOUSE, CST_APT, CST_STATUS, CST_MEMO)
      VALUES (:PCST_ID, :PCST_NO, :PCST_NAME, :PCST_STR_ID, :PCST_HOUSE, :PCST_APT, :PCST_STATUS, :PCST_MEMO);
    END
 
END^
SET TERM ; ^

GRANT EXECUTE
 ON PROCEDURE SP_CUSTOMER_SAVE TO  SYSDBA;



есть возможность получить список параметров перед выполнением
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976333
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть ЛИ возможность получить список параметров перед выполнением?
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976334
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk,

RDB$PROCEDURE_PARAMETERS
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976346
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисMaratIsk,

RDB$PROCEDURE_PARAMETERS

СПС
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976359
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskесть ЛИ возможность получить список параметров перед выполнением?
Prepare вызови, он и получится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976509
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMaratIskесть ЛИ возможность получить список параметров перед выполнением?
Prepare вызови, он и получится.


у меня не тот случай
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976519
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMaratIskесть ЛИ возможность получить список параметров перед выполнением?
Prepare вызови, он и получится.


нужен был именно список параметров
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976524
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskнужен был именно список параметров
Из в где?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976532
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

да ему наверное список формальных параметров нужен был как они описаны в самой ХП.
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976536
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMaratIskнужен был именно список параметров
Из в где?


Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
procedure TfrmCustomer.SaveMaster;
var
  s : string;
  i : integer;
  Param      : TParam;
  Field      : TField;
  FieldName  : string;
  ParamName  : string;
  sProcName  : string;
  fMemParams : TMemTable;
begin
  if fMemData.State in [dsEdit, dsInsert] then
    fMemData.Post
  else
    Exit;
  try
    fMemParams := TMemTable.Create(nil);
    sProcName := 'sp_customer_save';
    s := 'SELECT RDB$PARAMETER_NAME FROM RDB$PROCEDURE_PARAMETERS ' +
         'WHERE UPPER(RDB$PROCEDURE_NAME) = UPPER(:sProcName) ' +
         'ORDER BY RDB$PARAMETER_NUMBER';
    fDBQuery.Close;
    fDBQuery.SQL.Text := s;
    fDBQuery.FetchParams;
    fDBQuery.Params[0].AsString := sProcName;
    fDBQuery.Open;
    fMemParams.LoadFromDataSet(fDBQuery.RecordSet);
    fDBQuery.Close;
    fDBQuery.SQL.Text := sProcName;
    fDBQuery.FetchParams;

    while not fMemParams.Eof do begin
      ParamName := TRIM(fMemParams.Fields[0].AsString);
      FieldName := Copy(ParamName, 2, Length(ParamName) - 1);
      Field     := fMemData.FindField(FieldName);
      Param     := fDBQuery.CreateParam(ParamName, Field.DataType);
      case Field.DataType of
        ftBoolean    : Param.AsBoolean  := Field.AsBoolean;
        ftTime       ,
        ftDate       ,
        ftDateTime   : Param.AsDateTime := Field.AsDateTime;
        ftSmallInt   ,
        ftInteger    ,
        ftWord       ,
        ftAutoInc    : Param.AsInteger  := Field.AsInteger;
        ftCurrency   ,
        ftBCD        ,
        ftFloat      : Param.AsFloat    := Field.AsFloat;
        ftOraBlob,
        ftBlob       : Param.Value        := Field.Value;
        ftOraClob,
        ftMemo,;
        ftWideString : Param.AsString     := Field.AsString;
        else           Param.AsString     := Field.AsString;
      end; // case fParams[i].DataType
      fMemParams.Next;
    end;
    fDBQuery.Execute;
    fDBQuery.Close;
    fModified := TRUE;
  finally
    fMemParams.Free;
  end;
end;



трехзвенка :)
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976543
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поправка ftMemo,
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976552
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk,

чешуя какая-то. зачем дублировать код, который fDBQuery и так выполняет?
И потом, код этот нерабочий, потому что в тексте fDBQuery есть только имя процедуры, и сервер на попытку Execute тут же пошлет с неправильным запросом.
Если же там execute procedure procname, то все там прекрасно должно заполняться при fDBQuery.Prepare.
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976563
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvкод этот нерабочий, потому что в тексте fDBQuery есть только имя процедуры
У него fDBQuery это явно TXXXStoredProc.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976571
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvMaratIsk,

чешуя какая-то. зачем дублировать код, который fDBQuery и так выполняет?
И потом, код этот нерабочий, потому что в тексте fDBQuery есть только имя процедуры, и сервер на попытку Execute тут же пошлет с неправильным запросом.
Если же там execute procedure procname, то все там прекрасно должно заполняться при fDBQuery.Prepare.

не болтал бы ты не зная деталей

а код я просто привел для иллюстрации зачем мне список параметров
fDBQuery = компонент трехзвенки а не IBX или прочее подобное и не имеет представления с какой БД он взаимодействует
просто отправляет запрос или имя процедуры и либо получает данные, либо результат DML
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976573
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovkdvкод этот нерабочий, потому что в тексте fDBQuery есть только имя процедуры
У него fDBQuery это явно TXXXStoredProc.


fDBQuery - ни то не другое :)
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976576
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovkdvкод этот нерабочий, потому что в тексте fDBQuery есть только имя процедуры
У него fDBQuery это явно TXXXStoredProc.


fDBQuery - ни то не другое :)
просто если определяет что команда запрос - выполняет запрос, а иначе выполняет ХП
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976600
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIsk,

А EXECUTE BLOCK сможет?
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976603
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterMaratIsk,

А EXECUTE BLOCK сможет?

попробую - доложу
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976615
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskне болтал бы ты не зная деталей
грубите? зачем вы вообще тогда кусок своего частного кода привели?
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976626
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvMaratIskне болтал бы ты не зная деталей
грубите? зачем вы вообще тогда кусок своего частного кода привели?

приношу извинения

а код привел только для иллюстрации как хочу использовать перечень параметров
понимаю, что многое за кадром и вовсе не собирался показывать детали не имеющие отношения к вопросу

еще раз прошу извинить за горячность
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976661
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasterMaratIsk,

А EXECUTE BLOCK сможет?

не смог :)
гляну как можно реализовать
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976715
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskкод привел только для иллюстрации как хочу использовать перечень параметров

И этот человек спрашивал почему я скептически отношусь к трёхзвенке...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976716
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovMaratIskкод привел только для иллюстрации как хочу использовать перечень параметров

И этот человек спрашивал почему я скептически отношусь к трёхзвенке...


немудрено :)
с твоими знаниями о ней
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976717
MaratIsk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskDimitry Sibiryakovпропущено...

И этот человек спрашивал почему я скептически отношусь к трёхзвенке...


немудрено :)
с твоими знаниями о ней

вот черт! опять грублю :(
рот себе что ли зашить?!
...
Рейтинг: 0 / 0
Получить параметры ХП
    #38976728
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaratIskвот черт! опять грублю :(
Да нет, всё правильно. Но каждый раз, когда я вижу код наподобие приведённого выше, я
утверждаюсь в мысли, что оно за изучение и не стоит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Получить параметры ХП
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]