ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/udr/source/FBUDRIntf.pas
Revision: 402
Committed: Mon Aug 1 10:07:24 2022 UTC (2 years, 4 months ago) by tony
Content type: text/x-pascal
File size: 7424 byte(s)
Log Message:
IBX Release 2.5.0

File Contents

# User Rev Content
1 tony 402 (*
2     * Firebird UDR Support (fbudr). The fbudr components provide a set of
3     * Pascal language bindings for the Firebird API in support of server
4     * side User Defined Routines (UDRs). The fbudr package is an extension
5     * to the Firebird Pascal API.
6     *
7     * The contents of this file are subject to the Initial Developer's
8     * Public License Version 1.0 (the "License"); you may not use this
9     * file except in compliance with the License. You may obtain a copy
10     * of the License here:
11     *
12     * http://www.firebirdsql.org/index.php?op=doc&id=idpl
13     *
14     * Software distributed under the License is distributed on an "AS
15     * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
16     * implied. See the License for the specific language governing rights
17     * and limitations under the License.
18     *
19     * The Initial Developer of the Original Code is Tony Whyman.
20     *
21     * The Original Code is (C) 2021 Tony Whyman, MWA Software
22     * (http://www.mwasoftware.co.uk).
23     *
24     * All Rights Reserved.
25     *
26     * Contributor(s): ______________________________________.
27     *
28     *)
29     unit FBUDRIntf;
30    
31     {$IFDEF MSWINDOWS}
32     {$DEFINE WINDOWS}
33     {$ENDIF}
34    
35     {$IFDEF FPC}
36     {$mode delphi}
37     {$codepage UTF8}
38     {$interfaces COM}
39     {$ENDIF}
40    
41     interface
42    
43     uses
44     Classes, SysUtils, Firebird, IB, IBExternals;
45    
46     type
47     {The IFBUDRExternalContext interface provides the Firebird IExternalContext
48     interface as a native pascal interface}
49    
50     IFBUDRExternalContext = interface
51     ['{00b2616d-12e0-436a-8c2c-58670a2be805}']
52     function GetFirebirdAPI: IFirebirdAPI;
53     function GetAttachment: IAttachment;
54     function GetTransaction: ITransaction;
55     function GetUserName: AnsiString;
56     function GetDatabaseName: AnsiString;
57     function GetClientCharSet: AnsiString;
58     function obtainInfoCode: Integer;
59     function getInfo(code: Integer): Pointer;
60     function setInfo(code: Integer; value: Pointer): Pointer;
61     function cloneAttachment: IAttachment;
62     function GetServiceManager: IServiceManager;
63     function getStatus: Firebird.IStatus;
64     procedure CheckStatus;
65     function HasConfigFile: boolean;
66     function ReadConfigString(Section, Ident, DefaultValue: AnsiString): AnsiString;
67     function ReadConfigInteger(Section, Ident: AnsiString; DefaultValue: integer): integer;
68     function ReadConfigBool(Section, Ident: AnsiString; DefaultValue: boolean): boolean;
69     procedure WriteToLog(Msg: AnsiString);
70     end;
71    
72     TFBUDRTriggerType = (ttAfter, ttBefore, ttDatabase);
73     IFBUDRMessageMetadata = interface;
74    
75     {The IFBUDRRoutineMetadata interface provides the Firebird IRoutineMetadata
76     interface as a native Pascal interface}
77    
78     IFBUDRRoutineMetadata = interface
79     ['{28a03226-e8df-40e8-b67f-d3dc27886e9f}']
80     function getPackage: AnsiString;
81     function getName: AnsiString;
82     function getEntryPoint: AnsiString; {response is parsed into the following three components}
83     function getModuleName: AnsiString;
84     function getRoutineName: AnsiString;
85     function getInfo: AnsiString;
86     function getBody: AnsiString;
87     function HasInputMetadata: boolean;
88     function HasOutputMetadata: boolean;
89     function HasTriggerMetadata: boolean;
90     function getFBInputMetadata: IFBUDRMessageMetadata;
91     function getFBOutputMetadata: IFBUDRMessageMetadata;
92     function getFBTriggerMetadata: IFBUDRMessageMetadata;
93     function getTriggerTable: AnsiString;
94     function getTriggerType: TFBUDRTriggerType;
95     end;
96    
97     {IFBUDRProcMetadata is a subset of IFBUDRRoutineMetadata and is used to provide
98     additional information for procedure and function calls}
99    
100     IFBUDRProcMetadata = interface
101     ['{d20fc3ae-635e-4841-ad79-b4cd88be75d8}']
102     function getPackage: AnsiString;
103     function getName: AnsiString;
104     function getEntryPoint: AnsiString;
105     function getModuleName: AnsiString;
106     function getRoutineName: AnsiString;
107     function getInfo: AnsiString;
108     end;
109    
110     {IFBUDRTriggerMetaData is a subset of IFBUDRRoutineMetadata and is used to provide
111     additional information for triggers}
112    
113     IFBUDRTriggerMetaData = interface
114     ['{9458bad8-809a-469a-b13f-3a3ab95f8d94}']
115     function getName: AnsiString;
116     function getModuleName: AnsiString;
117     function getRoutineName: AnsiString;
118     function getInfo: AnsiString;
119     function getTriggerTable: AnsiString;
120     function getTriggerType: TFBUDRTriggerType;
121     end;
122    
123    
124     {IFBUDRInputParams is a subset of the IResults interface and is used to provide
125     the input parameters to an external function, procedure or trigger as a
126     Pascal interface using Pascal native types.}
127    
128     IFBUDRInputParams = interface
129     ['{e49d096e-3a9c-4f75-bb39-db32b1897312}']
130     function getCount: integer;
131     function getSQLData(index: integer): ISQLData;
132     function ParamExists(Idx: AnsiString): boolean;
133     function ByName(Idx: AnsiString): ISQLData;
134     property Data[index: integer]: ISQLData read getSQLData; default;
135     property Count: integer read getCount;
136     end;
137    
138     {IFBUDROutputData is a subset of the ISQLParams interface and is used to return the
139     each output row for an external procedure}
140    
141     IFBUDROutputData = interface
142     ['{8a7d7890-e9a4-430b-8cbc-3874b5f66b31}']
143     function getCount: integer;
144     function getSQLParam(index: integer): ISQLParam;
145     function GetModified: Boolean;
146     function GetHasCaseSensitiveParams: Boolean;
147     function FieldExists(Idx: AnsiString): boolean;
148     function ByName(Idx: AnsiString): ISQLParam ;
149     procedure Clear;
150     property Modified: Boolean read GetModified;
151     property Params[index: integer]: ISQLParam read getSQLParam; default;
152     property Count: integer read getCount;
153     end;
154    
155     {IFBUDRMetadataBuilder provides the FIrebird IMetadataBuilder interface
156     as a native Pascal Interface}
157    
158     IFBUDRMetadataBuilder = interface
159     ['{a6876fed-fd70-40f0-b965-6c43b8c5c00d}']
160     procedure setType(index: Cardinal; type_: Cardinal);
161     procedure setSubType(index: Cardinal; subType: Integer);
162     procedure setLength(index: Cardinal; length: Cardinal);
163     procedure setCharSet(index: Cardinal; charSet: Cardinal);
164     procedure setScale(index: Cardinal; scale: Integer);
165     procedure truncate(count: Cardinal);
166     procedure moveNameToIndex(name: AnsiString; index: Cardinal);
167     procedure remove(index: Cardinal);
168     function addField:Cardinal;
169     procedure setField(index: Cardinal; field: AnsiString);
170     procedure setRelation(index: Cardinal; relation: AnsiString);
171     procedure setOwner(index: Cardinal; owner: AnsiString);
172     procedure setAlias(index: Cardinal; alias: AnsiString);
173     end;
174    
175     IFBUDRMessageMetadata = interface
176     ['{da84190f-91a3-40ae-9fab-bbfd98a49dcb}']
177     function getCount: Cardinal;
178     function getField(index: Cardinal): AnsiString;
179     function getRelation(index: Cardinal): AnsiString;
180     function getOwner(index: Cardinal): AnsiString;
181     function getAlias(index: Cardinal): AnsiString;
182     function getType(index: Cardinal): Cardinal;
183     function isNullable(index: Cardinal): Boolean;
184     function getSubType(index: Cardinal): Integer;
185     function getLength(index: Cardinal): Cardinal;
186     function getScale(index: Cardinal): Integer;
187     function getCharSet(index: Cardinal): Cardinal;
188     function getOffset(index: Cardinal): Cardinal;
189     function getNullOffset(index: Cardinal): Cardinal;
190     function getBuilder: IFBUDRMetadataBuilder;
191     function getMessageLength: Cardinal;
192     function getAlignment: Cardinal;
193     function getAlignedLength: Cardinal;
194     end;
195    
196    
197    
198     implementation
199    
200     end.
201    

Properties

Name Value
svn:eol-style native