Гость
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Получить параметры ХП / 25 сообщений из 27, страница 1 из 2
04.06.2015, 15:06
    #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
04.06.2015, 15:07
    #38976333
MaratIsk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить параметры ХП
есть ЛИ возможность получить список параметров перед выполнением?
...
Рейтинг: 0 / 0
04.06.2015, 15:08
    #38976334
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить параметры ХП
MaratIsk,

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

RDB$PROCEDURE_PARAMETERS

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


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


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

да ему наверное список формальных параметров нужен был как они описаны в самой ХП.
...
Рейтинг: 0 / 0
04.06.2015, 16:58
    #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
04.06.2015, 17:01
    #38976543
MaratIsk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить параметры ХП
поправка ftMemo,
...
Рейтинг: 0 / 0
04.06.2015, 17:04
    #38976552
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Получить параметры ХП
MaratIsk,

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

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

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

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


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


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

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

А EXECUTE BLOCK сможет?

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

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

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

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

А EXECUTE BLOCK сможет?

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

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

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


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

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


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

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


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