📄 sql.pas
字号:
unit Sql;
interface
uses
{$IFNDEF LINUX}
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
DBCtrls, ExtCtrls, Grids, DBGrids, StdCtrls, ToolWin, ComCtrls, Buttons,
OdacVcl,
{$ELSE}
SysUtils, Types, Classes, QGraphics, QControls, QForms, QDialogs, QStdCtrls,
QDBCtrls, QComCtrls, QExtCtrls, QGrids, QDBGrids, QButtons, OdacClx,
{$ENDIF}
Db, DBAccess, Ora, OdacDemoForm, OdacDemoFrame;
type
TSqlFrame = class(TOdacDemoFrame)
meSQL: TMemo;
OraSQL: TOraSQL;
meResult: TMemo;
Splitter1: TSplitter;
Label1: TLabel;
ToolBar: TPanel;
ToolButton1: TToolButton;
btExecute: TSpeedButton;
btBreak: TSpeedButton;
btParType: TSpeedButton;
Panel1: TPanel;
cbNonBlocking: TCheckBox;
Panel2: TPanel;
procedure btExecuteClick(Sender: TObject);
procedure btParTypeClick(Sender: TObject);
procedure OraSQLAfterExecute(Sender: TObject; Result: Boolean);
procedure cbNonBlockingClick(Sender: TObject);
procedure btBreakClick(Sender: TObject);
private
{ Private declarations }
public
procedure Initialize; override;
procedure SetDebug(Value: boolean); override;
destructor Destroy; override;
end;
implementation
uses
ParamType;
{$IFDEF CLR}
{$R *.nfm}
{$ENDIF}
{$IFDEF WIN32}
{$R *.dfm}
{$ENDIF}
{$IFDEF LINUX}
{$R *.xfm}
{$ENDIF}
destructor TSqlFrame.Destroy;
begin
inherited;
FreeAndNil(ParamTypeForm);
end;
procedure TSqlFrame.Initialize;
begin
inherited;
OraSQL.Connection := Connection;
if ParamTypeForm = nil then
ParamTypeForm := TParamTypeForm.Create(ODACForm);
ParamTypeForm.OraSQL := OraSQL;
OraSQL.SQL := meSQL.Lines;
cbNonBlocking.Checked := OraSQL.NonBlocking;
end;
procedure TSqlFrame.btExecuteClick(Sender: TObject);
var
i:integer;
Untyped:boolean;
begin
OraSQL.SQL.Assign(meSQL.Lines);
Untyped := False;
for i := 0 to OraSQL.Params.Count-1 do
if OraSQL.Params[i].DataType = ftUnknown then begin
Untyped := True;
end;
if Untyped then
ParamTypeForm.ShowModal;
OdacForm.StatusBar.Panels[1].Text := 'Executing...';
OraSQL.Execute;
end;
procedure TSqlFrame.btParTypeClick(Sender: TObject);
begin
OraSQL.SQL.Assign(meSQL.Lines);
if ParamTypeForm = nil then
ParamTypeForm := TParamTypeForm.Create(ODACForm);
ParamTypeForm.ShowModal;
end;
procedure TSqlFrame.OraSQLAfterExecute(Sender: TObject; Result: Boolean);
var
i:integer;
begin
if Result then begin
OdacForm.StatusBar.Panels[1].Text := 'Success' + ' (' + IntToStr(OraSQL.RowsProcessed) +
' rows processed)';
meResult.Lines.Clear;
for i := 0 to OraSQL.Params.Count-1 do begin
meResult.Lines.Add(OraSQL.Params[i].Name + ' = ' +
OraSQL.Params[i].AsString);
end;
end
else
OdacForm.StatusBar.Panels[1].Text := 'Fail';
{$IFNDEF LINUX}
MessageBeep(MB_OK);
{$ENDIF}
end;
procedure TSqlFrame.cbNonBlockingClick(Sender: TObject);
begin
OraSQL.NonBlocking := cbNonBlocking.Checked;
end;
procedure TSqlFrame.btBreakClick(Sender: TObject);
begin
OraSQL.BreakExec;
end;
{
declare
C NUMBER;
begin
SELECT Count(*)
INTO :C
FROM Scott.Dept;
end;
}
procedure TSqlFrame.SetDebug(Value: boolean);
begin
OraSQL.Debug := Value;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -