?? fmmain.~pas
字號:
unit fmMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ADODB, DB, DBTables, Grids, DBGrids, StdCtrls, Buttons;
type
Tfrm_Main = class(TForm)
dbConn: TADOConnection;
DS: TDataSource;
DBGrid1: TDBGrid;
DSet: TADODataSet;
Query: TADOQuery;
ADOQuery1: TADOQuery;
sp: TADOStoredProc;
GroupBox1: TGroupBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
btnCallProc: TBitBtn;
btnQuery: TButton;
Button1: TButton;
btnGetProc: TButton;
procedure btnCallProcClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure btnQueryClick(Sender: TObject);
procedure btnGetProcClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frm_Main: Tfrm_Main;
implementation
{$R *.dfm}
procedure Tfrm_Main.btnCallProcClick(Sender: TObject);
begin
dset.Close ;
dset.CommandType := cmdText ;
dset.Parameters.Clear ;
//***利用call方法調用oracle過程時,參數必須由?來傳, 即使你要傳的參數為常理
//輸出游標的參數不需要指定!!!!!!,本來此函數帶兩個參數,我們這里只需要傳一個參數.
dset.CommandText := '{call JxfOracleProc(?,?,?) }' ;
//***C 順序有關,createparam必須放在commandtext賦值語句之后.
// 創建第一個參數,對應call中的第一個?,ftinteger為類型,10為長度,20為傳入的實參值
dset.Parameters.CreateParameter('sID',ftString,pdinput,10,'test');
dset.Parameters.CreateParameter('sName',ftString,pdinput,10,'test');
dset.Parameters.CreateParameter('iNum',ftinteger,pdinput,10,20);
//下面調用ADODataSet1 的open方法,返回數據集(對應包過程的游標)
Dset.Open ;
exit;
while not DSet.Eof do
begin
showmessage('CID : '+string(dset.FieldByName('CID').Value) +
'--CNAME :' + string(dset.FieldByName('CNAME').Value) +
'--PNUMBER :' + string(dset.FieldByName('PNUMBER').Value)
) ;
dset.Next ;
end ;
end;
procedure Tfrm_Main.FormCreate(Sender: TObject);
begin
dbConn.ConnectionString := 'OraOLEDB.Oracle.1;Password=jtest;Persist Security Info=True;User ID=jtest;Data Source=lotto;PLSQLRSet=1';
dbConn.Connected := true;
end;
procedure Tfrm_Main.Button1Click(Sender: TObject);
begin
//AdoQuery1.Close ;
//AdoQuery1.Parameters.Clear ;
//AdoQuery1.SQL.Clear ;
// AdoQuery1.SQL.Add('{call JxfOraclePNone(?,?,?)}') ;
//// AdoQuery1.Parameters.CreateParameter('sID',ftString,pdinput, 10,'test') ;
// AdoQuery1.Parameters.CreateParameter('sName',ftString,pdinput, 10,'jxf') ;
// AdoQuery1.Parameters.CreateParameter('iNum',ftinteger,pdinput, 10,22) ;
// AdoQuery1.Active := true;
AdoQuery1.Close;
AdoQuery1.Parameters[0].Value := 'jjj';
AdoQuery1.Parameters[1].Value := 'kkk';
AdoQuery1.Parameters[2].Value := 51;
AdoQuery1.Active := true;
end;
procedure Tfrm_Main.btnQueryClick(Sender: TObject);
var
sID,sName,iNum:OleVariant;
p:TParameter;
begin
Query.Close;
Query.Parameters.Clear;
Query.SQL.Clear;
Query.SQL.Add('{call JxfOracleProc(?,?,?)}');
sID := 'ok';
sName := 'jxf';
iNum := 0;
//p := Query.Parameters.CreateParameter('SID',ftString,pdInput,10,sID);
//p.Parameters.
//Query.Parameters.CreateParameter('@SNAME',ftString,pdInput,10,sName);
//Query.Parameters.CreateParameter('@INUM',ftInteger,pdInput,10,iNum);
// Query.Active := true;
// AdoQuery1.Close;
Query.Parameters[0].Value := edit1.Text;
Query.Parameters[1].Value := edit2.Text;
Query.Parameters[2].Value := edit3.Text;
Query.Active := true;
end;
procedure Tfrm_Main.btnGetProcClick(Sender: TObject);
var
vData:OleVariant;
begin
try
dset.Close ;
dset.CommandType := cmdText ;
dset.Parameters.Clear ;
//***利用call方法調用oracle過程時,參數必須由?來傳, 即使你要傳的參數為常理
//輸出游標的參數不需要指定!!!!!!,本來此函數帶兩個參數,我們這里只需要傳一個參數.
dset.CommandText := '{call PKG_Test.getProc(?) }' ;
//***C 順序有關,createparam必須放在commandtext賦值語句之后.
// 創建第一個參數,對應call中的第一個?,ftinteger為類型,10為長度,20為傳入的實參值
dset.Parameters.CreateParameter('p_id',ftVariant,pdinput,0,1);
//dset.Parameters.CreateParameter('p_rc',ftVariant,pdOutPut,0,null); //ftCursor
//下面調用ADODataSet1 的open方法,返回數據集(對應包過程的游標)
Dset.Open ;
except
on e:Exception do ShowMessage(e.Message);
end;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -