⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sql.pas

📁 odac for oralce 8i,10g,11g easy to connect to oralce from delphi
💻 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 + -