ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/examples/SelectInto/TestSelectInto.dpr
Revision: 402
Committed: Mon Aug 1 10:07:24 2022 UTC (2 years, 4 months ago) by tony
File size: 3795 byte(s)
Log Message:
IBX Release 2.5.0

File Contents

# User Rev Content
1 tony 402 program TestSelectInto;
2    
3     {$APPTYPE CONSOLE}
4    
5     {$R *.res}
6    
7     uses
8     System.SysUtils,
9     Classes, FBUDRController, FBUdrPlugin, IB,
10     UdrSelectInto in 'UdrSelectInto.pas';
11    
12     procedure ReportResult(aValue: IResults);
13     var i: integer;
14     begin
15     for i := 0 to aValue.getCount - 1 do
16     writeln(aValue[i].Name,' = ',aValue[i].AsString);
17     end;
18    
19     procedure ReportResults(cursor: IResultset);
20     begin
21     while not cursor.IsEof do
22     begin
23     ReportResult(cursor);
24     cursor.FetchNext;
25     end;
26     end;
27    
28     procedure RunTest(UDRPlugin: TFBUdrPluginEmulator);
29     var SelectInto: TExternalProcedureWrapper;
30     Transaction: ITransaction;
31     Results: IProcedureResults;
32     begin
33     {Get the emulator wrapper for the row_count function, declared as MyRowCount}
34     SelectInto := UDRPlugin.makeProcedure('SELECT_INTO', {Name of procedure in database - case sensitive}
35     '', {package name is empty}
36     'selectinto!select_into' {entry point}
37     );
38     try
39     SelectInto.InputParams.ByName('select_statement').AsString := 'Select * From EMPLOYEE Where Salary < 50000';
40     SelectInto.InputParams.ByName('table_name').AsString := 'LOWER_PAID';
41     SelectInto.InputParams.ByName('table_type').AsString := '';
42     Transaction := UDRPlugin.Attachment.StartTransaction([isc_tpb_write,isc_tpb_nowait,isc_tpb_read_committed],taCommit);
43     Results := SelectInto.Execute(Transaction);
44     if Results.FetchNext then
45     writeln('Procedure Returns ',Results.ByName('Status').AsString)
46     else
47     writeln('No results');
48    
49     writeln('Show Table');
50     ReportResults(UDRPlugin.Attachment.OpenCursorAtStart(Transaction,'Select * From LOWER_PAID'));
51     finally
52     SelectInto.Free;
53     end;
54     end;
55    
56     const
57     DDL: array [0..0] of Ansistring = ('create or alter procedure select_into (' +
58     'select_statement blob sub_type 1 not null,'+
59     'table_name varchar(63) not null,'+
60     'table_type varchar(25) not null' +
61     ') returns ('+
62     'status varchar(100)) as begin end'
63     );
64    
65     CleanUpDDL: array [0..0] of Ansistring = ('Drop procedure select_into'
66     );
67    
68    
69     procedure DoRunTest;
70     var Attachment: IAttachment;
71     DPB: IDPB;
72     UDRPlugin: TFBUdrPluginEmulator;
73     i: integer;
74     begin
75     {Open a connection with the example employee database. Amend database parameters
76     as needed.}
77     DPB := FirebirdAPI.AllocateDPB;
78     DPB.Add(isc_dpb_user_name).setAsString('SYSDBA');
79     DPB.Add(isc_dpb_password).setAsString('masterkey');
80     DPB.Add(isc_dpb_lc_ctype).setAsString('UTF8');
81     DPB.Add(isc_dpb_set_db_SQL_dialect).setAsByte(3);
82     Attachment := FirebirdAPI.OpenDatabase('localhost:employee',DPB);
83     for i := 0 to Length(DDL) -1 do
84     Attachment.ExecImmediate([isc_tpb_write,isc_tpb_nowait,isc_tpb_concurrency],DDL[i]);
85     try
86     UDRPlugin := TFBUdrPluginEmulator.Create(FBUDRControllerOptions.ModuleName);
87     try
88     {initialize the emulator with the database connection}
89     UDRPlugin.Attachment := Attachment;
90     RunTest(UDRPlugin);
91     finally
92     UDRPlugin.Free;
93     end;
94     finally
95     for i := 0 to Length(CleanUpDDL) -1 do
96     Attachment.ExecImmediate([isc_tpb_write,isc_tpb_nowait,isc_tpb_concurrency],CleanUpDDL[i]);
97     Attachment.Disconnect(true);
98     end;
99     end;
100    
101     begin
102     with FBUDRControllerOptions do
103     begin
104     ModuleName := 'selectinto';
105     AllowConfigFileOverrides := true;
106     LogFileNameTemplate := 'SelectInto.log';
107     LogOptions := [loLogFunctions, loLogProcedures, loLogTriggers, loDetails];
108     end;
109     DoRunTest;
110     readln; {force console window to stay open}
111     end.
112    

Properties

Name Value
svn:eol-style native