powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как создать SP с помощью IBX компонентов (Delphi 7)
9 сообщений из 9, страница 1 из 1
Как создать SP с помощью IBX компонентов (Delphi 7)
    #32603450
IgorK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!
Подскажите как сделать такое - нужно в рантайме создать SP в базе Interbase. Используются IBX компоненты. TIBQuery и TIBDataSet на
Код: plaintext
CREATE PROCEDURE ... 
ругаются, хотя тот же текст через IBExpert отлично создает процедуру, но он вроде FIBPlus пользует.
...
Рейтинг: 0 / 0
Как создать SP с помощью IBX компонентов (Delphi 7)
    #32603470
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно через TIBQuery , только не вызывай метод Open , а ExecSQL .
И свойство ParamCheck выставь в false .
...
Рейтинг: 0 / 0
Как создать SP с помощью IBX компонентов (Delphi 7)
    #32603506
IgorK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так и пробую, только когда доходит до 'as' кричит, что все не так!
...
Рейтинг: 0 / 0
Как создать SP с помощью IBX компонентов (Delphi 7)
    #32603511
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прям так и кричит?
...
Рейтинг: 0 / 0
Как создать SP с помощью IBX компонентов (Delphi 7)
    #32603540
Фотография AndriyKo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorKТак и пробую, только когда доходит до 'as' кричит, что все не так!

Ну дык текст процедуры дай, что ли. И описание ошибки тож.
...
Рейтинг: 0 / 0
Как создать SP с помощью IBX компонентов (Delphi 7)
    #32603564
f_w_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IgorKПриветствую!
Подскажите как сделать такое - нужно в рантайме создать SP в базе Interbase. Используются IBX компоненты. TIBQuery и TIBDataSet на
Код: plaintext
CREATE PROCEDURE ... 
ругаются, хотя тот же текст через IBExpert отлично создает процедуру, но он вроде FIBPlus пользует.
Сдается мне, что DDL операторы надо выполнять через IBSQL.
...
Рейтинг: 0 / 0
Как создать SP с помощью IBX компонентов (Delphi 7)
    #32603577
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TIBQuery, в сущности - обёртка вокруг TIBSQL.
...
Рейтинг: 0 / 0
Как создать SP с помощью IBX компонентов (Delphi 7)
    #32604998
Klick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо: процедуры в рантайме = не есть гуддд!
процедуры в дизайнтайме = есть гуддд !!!!
:)
...
Рейтинг: 0 / 0
Как создать SP с помощью IBX компонентов (Delphi 7)
    #32608523
Фотография mv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все работает, однако. Delphi 7 (+SP). FireBird 1.5.1 RC3

Вот форма:

Код: plaintext
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.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
object Form1: TForm1
  Left =  194 
  Top =  106 
  Width =  617 
  Height =  243 
  Caption = 'Form1'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = - 11 
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch =  96 
  TextHeight =  13 
  object Button1: TButton
    Left =  404 
    Top =  28 
    Width =  101 
    Height =  25 
    Caption = 'Через IBSQL'
    TabOrder =  0 
    OnClick = Button1Click
  end
  object Button2: TButton
    Left =  404 
    Top =  72 
    Width =  101 
    Height =  25 
    Caption = 'Через IBQUERY'
    TabOrder =  1 
    OnClick = Button2Click
  end
  object IBDatabase1: TIBDatabase
    Connected = True
    DatabaseName = 'E:\Wrk\TestIBX\TEST.GDB'
    Params.Strings = (
      'user_name=sysdba'
      'password=masterkey'
      'lc_ctype=WIN1251')
    LoginPrompt = False
    IdleTimer =  0 
    SQLDialect =  3 
    TraceFlags = []
    AllowStreamedConnected = False
    Left =  44 
    Top =  12 
  end
  object IBSQL1: TIBSQL
    Database = IBDatabase1
    ParamCheck = False
    SQL.Strings = (
      'create procedure TEST1'
      'returns (Id integer)'
      ''
      'as'
      'begin'
      '  for  select id from BTABLE '
      '    into :Id do'
      '      suspend;'
      'end;')
    Transaction = IBTransaction1
    Left =  88 
    Top =  12 
  end
  object IBTransaction1: TIBTransaction
    Active = False
    DefaultDatabase = IBDatabase1
    Params.Strings = (
      'read_committed'
      'rec_version'
      'nowait')
    AutoStopAction = saNone
    Left =  156 
    Top =  20 
  end
  object IBQuery1: TIBQuery
    Database = IBDatabase1
    Transaction = IBTransaction1
    BufferChunks =  1000 
    CachedUpdates = False
    ParamCheck = False
    SQL.Strings = (
      'create procedure TEST2'
      'returns (Id integer)'
      ''
      'as'
      'begin'
      '  for  select id from BTABLE '
      '    into :Id do'
      '      suspend;'
      'end;')
    Left =  72 
    Top =  100 
  end
end

Вот текст программы:

Код: plaintext
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.
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IBDatabase, IBSQL, DB, StdCtrls, IBCustomDataSet, IBQuery;

type
  TForm1 = class(TForm)
    Button1: TButton;
    IBDatabase1: TIBDatabase;
    IBSQL1: TIBSQL;
    IBTransaction1: TIBTransaction;
    IBQuery1: TIBQuery;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if not IBDatabase1.Connected then
  IBDatabase1.Open;
if not IBTransaction1.InTransaction then
  IBTransaction1.StartTransaction;
  try
    IBSQL1.ExecQuery;
    IBTransaction1.Commit
  except
    IBTransaction1.Rollback
  end

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if not IBDatabase1.Connected then
  IBDatabase1.Open;
if not IBTransaction1.InTransaction then
  IBTransaction1.StartTransaction;
  try
    IBQuery1.ExecSQL;
    IBTransaction1.Commit
  except
    IBTransaction1.Rollback
  end
end;

end.

В базе - одна табличка BTABLE, в которой есть поле Id .


Удачи.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как создать SP с помощью IBX компонентов (Delphi 7)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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