ruby-oci8 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +569 -0
- data/Makefile +51 -0
- data/NEWS +322 -0
- data/README +415 -0
- data/VERSION +1 -0
- data/dist-files +70 -0
- data/doc/api.en.html +527 -0
- data/doc/api.en.rd +554 -0
- data/doc/api.ja.html +525 -0
- data/doc/api.ja.rd +557 -0
- data/doc/manual.css +35 -0
- data/ext/oci8/MANIFEST +22 -0
- data/ext/oci8/attr.c +415 -0
- data/ext/oci8/bind.c +194 -0
- data/ext/oci8/const.c +165 -0
- data/ext/oci8/define.c +53 -0
- data/ext/oci8/describe.c +81 -0
- data/ext/oci8/descriptor.c +39 -0
- data/ext/oci8/env.c +276 -0
- data/ext/oci8/error.c +234 -0
- data/ext/oci8/extconf.rb +118 -0
- data/ext/oci8/handle.c +262 -0
- data/ext/oci8/lob.c +386 -0
- data/ext/oci8/oci8.c +137 -0
- data/ext/oci8/oci8.h +345 -0
- data/ext/oci8/ocinumber.c +117 -0
- data/ext/oci8/oraconf.rb +1026 -0
- data/ext/oci8/oradate.c +426 -0
- data/ext/oci8/oranumber.c +445 -0
- data/ext/oci8/param.c +37 -0
- data/ext/oci8/post-config.rb +5 -0
- data/ext/oci8/server.c +182 -0
- data/ext/oci8/session.c +99 -0
- data/ext/oci8/stmt.c +624 -0
- data/ext/oci8/svcctx.c +229 -0
- data/lib/DBD/OCI8/OCI8.rb +549 -0
- data/lib/oci8.rb.in +1605 -0
- data/metaconfig +142 -0
- data/pre-distclean.rb +7 -0
- data/ruby-oci8.gemspec +54 -0
- data/ruby-oci8.spec +62 -0
- data/setup.rb +1331 -0
- data/support/README +4 -0
- data/support/runit/assert.rb +281 -0
- data/support/runit/cui/testrunner.rb +101 -0
- data/support/runit/error.rb +4 -0
- data/support/runit/method_mappable.rb +20 -0
- data/support/runit/robserver.rb +25 -0
- data/support/runit/setuppable.rb +15 -0
- data/support/runit/teardownable.rb +16 -0
- data/support/runit/testcase.rb +113 -0
- data/support/runit/testfailure.rb +25 -0
- data/support/runit/testresult.rb +121 -0
- data/support/runit/testsuite.rb +43 -0
- data/support/runit/version.rb +3 -0
- data/test/README +4 -0
- data/test/config.rb +129 -0
- data/test/test_all.rb +43 -0
- data/test/test_bind_raw.rb +53 -0
- data/test/test_bind_time.rb +191 -0
- data/test/test_break.rb +81 -0
- data/test/test_clob.rb +101 -0
- data/test/test_connstr.rb +80 -0
- data/test/test_dbi.rb +317 -0
- data/test/test_dbi_clob.rb +56 -0
- data/test/test_describe.rb +137 -0
- data/test/test_metadata.rb +243 -0
- data/test/test_oci8.rb +273 -0
- data/test/test_oradate.rb +263 -0
- data/test/test_oranumber.rb +149 -0
- metadata +118 -0
data/ext/oci8/oci8.c
ADDED
@@ -0,0 +1,137 @@
|
|
1
|
+
/*
|
2
|
+
oci8.c - part of ruby-oci8
|
3
|
+
|
4
|
+
Copyright (C) 2002 KUBO Takehiro <kubo@jiubao.org>
|
5
|
+
|
6
|
+
=begin
|
7
|
+
== class hierarchy
|
8
|
+
* ((<OCIHandle>))
|
9
|
+
* ((<OCIEnv>)) (OCI environment handle)
|
10
|
+
* ((<OCISvcCtx>)) (OCI service context handle)
|
11
|
+
* ((<OCIServer>)) (OCI server handle)
|
12
|
+
* ((<OCISession>)) (OCI user session handle)
|
13
|
+
* ((<OCIStmt>)) (OCI statement handle)
|
14
|
+
* ((<OCIDefine>)) (OCI define handle)
|
15
|
+
* ((<OCIBind>)) (OCI bind handle)
|
16
|
+
* ((<OCIDescribe>)) (OCI descibe handle)
|
17
|
+
|
18
|
+
* ((<OCIDescriptor>))
|
19
|
+
* ((<OCILobLocator>)) (OCI Lob Locator descriptor)
|
20
|
+
* ((<OCIParam>)) (read-only parameter descriptor)
|
21
|
+
* ((<OCIRowid>)) (OCI ROWID descriptor)
|
22
|
+
|
23
|
+
* OCIException
|
24
|
+
* ((<OCIError>))
|
25
|
+
* ((<OCISuccessWithInfo>))
|
26
|
+
* OCINoData
|
27
|
+
* OCIInvalidHandle
|
28
|
+
* OCINeedData
|
29
|
+
* OCIStillExecuting
|
30
|
+
|
31
|
+
* ((<OraDate>))
|
32
|
+
* ((<OraNumber>))
|
33
|
+
|
34
|
+
== object hierarchy
|
35
|
+
|
36
|
+
* ((<OCIEnv>)) (OCI environment handle)
|
37
|
+
* ((<OCISvcCtx>)) (OCI service context handle)
|
38
|
+
* ((<OCIServer>)) (OCI server handle)
|
39
|
+
* ((<OCISession>)) (OCI user session handle)
|
40
|
+
* ((<OCIStmt>)) (OCI statement handle)
|
41
|
+
* ((<OCIDefine>)) (OCI define handle)
|
42
|
+
* ((<OCIBind>)) (OCI bind handle)
|
43
|
+
=end
|
44
|
+
*/
|
45
|
+
#include "oci8.h"
|
46
|
+
|
47
|
+
/* #define DEBUG_CORE_FILE 1 */
|
48
|
+
#ifdef DEBUG_CORE_FILE
|
49
|
+
#include <signal.h>
|
50
|
+
#endif
|
51
|
+
|
52
|
+
VALUE cOCIHandle;
|
53
|
+
VALUE cOCIEnv;
|
54
|
+
VALUE cOCIServer;
|
55
|
+
VALUE cOCISession;
|
56
|
+
VALUE cOCISvcCtx;
|
57
|
+
VALUE cOCIStmt;
|
58
|
+
VALUE cOCIDefine;
|
59
|
+
VALUE cOCIBind;
|
60
|
+
VALUE cOCIDescribe;
|
61
|
+
|
62
|
+
VALUE cOCIDescriptor;
|
63
|
+
VALUE cOCIParam;
|
64
|
+
VALUE cOCILobLocator;
|
65
|
+
VALUE cOCIFileLocator;
|
66
|
+
VALUE cOCIRowid;
|
67
|
+
|
68
|
+
VALUE eOCIException;
|
69
|
+
VALUE eOCINoData;
|
70
|
+
VALUE eOCIError;
|
71
|
+
VALUE eOCIInvalidHandle;
|
72
|
+
VALUE eOCINeedData;
|
73
|
+
VALUE eOCIStillExecuting;
|
74
|
+
VALUE eOCIContinue;
|
75
|
+
VALUE eOCISuccessWithInfo;
|
76
|
+
|
77
|
+
VALUE cOraDate;
|
78
|
+
VALUE cOraNumber;
|
79
|
+
|
80
|
+
void
|
81
|
+
Init_oci8lib()
|
82
|
+
{
|
83
|
+
/* Handle */
|
84
|
+
cOCIHandle = rb_define_class("OCIHandle", rb_cObject);
|
85
|
+
cOCIEnv = rb_define_class("OCIEnv", cOCIHandle);
|
86
|
+
cOCISvcCtx = rb_define_class("OCISvcCtx", cOCIHandle);
|
87
|
+
cOCIServer = rb_define_class("OCIServer", cOCIHandle);
|
88
|
+
cOCISession = rb_define_class("OCISession", cOCIHandle);
|
89
|
+
cOCIStmt = rb_define_class("OCIStmt", cOCIHandle);
|
90
|
+
cOCIDefine = rb_define_class("OCIDefine", cOCIHandle);
|
91
|
+
cOCIBind = rb_define_class("OCIBind", cOCIHandle);
|
92
|
+
cOCIDescribe = rb_define_class("OCIDescribe", cOCIHandle);
|
93
|
+
|
94
|
+
/* Descriptor */
|
95
|
+
cOCIDescriptor = rb_define_class("OCIDescriptor", rb_cObject);
|
96
|
+
cOCILobLocator = rb_define_class("OCILobLocator", cOCIDescriptor);
|
97
|
+
cOCIFileLocator = rb_define_class("OCIFileLocator", cOCILobLocator);
|
98
|
+
cOCIParam = rb_define_class("OCIParam", cOCIDescriptor);
|
99
|
+
cOCIRowid = rb_define_class("OCIRowid", cOCIDescriptor);
|
100
|
+
|
101
|
+
/* Exception */
|
102
|
+
eOCIException = rb_define_class("OCIException", rb_eStandardError);
|
103
|
+
eOCINoData = rb_define_class("OCINoData", eOCIException);
|
104
|
+
eOCIError = rb_define_class("OCIError", eOCIException);
|
105
|
+
eOCIInvalidHandle = rb_define_class("OCIInvalidHandle", eOCIException);
|
106
|
+
eOCINeedData = rb_define_class("OCINeedData", eOCIException);
|
107
|
+
eOCIStillExecuting = rb_define_class("OCIStillExecuting", eOCIException);
|
108
|
+
eOCIContinue = rb_define_class("OCIContinue", eOCIException);
|
109
|
+
eOCISuccessWithInfo = rb_define_class("OCISuccessWithInfo", eOCIError);
|
110
|
+
|
111
|
+
/* oracle specific type */
|
112
|
+
cOraDate = rb_define_class("OraDate", rb_cObject);
|
113
|
+
cOraNumber = rb_define_class("OraNumber", rb_cObject);
|
114
|
+
|
115
|
+
Init_oci8_const();
|
116
|
+
Init_oci8_handle();
|
117
|
+
Init_oci8_env();
|
118
|
+
Init_oci8_error();
|
119
|
+
Init_oci8_svcctx();
|
120
|
+
Init_oci8_server();
|
121
|
+
Init_oci8_session();
|
122
|
+
Init_oci8_stmt();
|
123
|
+
Init_oci8_define();
|
124
|
+
Init_oci8_bind();
|
125
|
+
Init_oci8_describe();
|
126
|
+
|
127
|
+
Init_oci8_descriptor();
|
128
|
+
Init_oci8_param();
|
129
|
+
Init_oci8_lob();
|
130
|
+
|
131
|
+
Init_ora_date();
|
132
|
+
Init_ora_number();
|
133
|
+
|
134
|
+
#ifdef DEBUG_CORE_FILE
|
135
|
+
signal(SIGSEGV, SIG_DFL);
|
136
|
+
#endif
|
137
|
+
}
|
data/ext/oci8/oci8.h
ADDED
@@ -0,0 +1,345 @@
|
|
1
|
+
/*
|
2
|
+
oci8.h - part of ruby-oci8
|
3
|
+
|
4
|
+
Copyright (C) 2002-2006 KUBO Takehiro <kubo@jiubao.org>
|
5
|
+
*/
|
6
|
+
#ifndef _RUBY_OCI_H_
|
7
|
+
#define _RUBY_OCI_H_ 1
|
8
|
+
|
9
|
+
#include "ruby.h"
|
10
|
+
#include "rubyio.h"
|
11
|
+
#include "intern.h"
|
12
|
+
|
13
|
+
#include <stdio.h>
|
14
|
+
#include <stdlib.h>
|
15
|
+
#ifdef __cplusplus
|
16
|
+
extern "C" {
|
17
|
+
#endif
|
18
|
+
#include <oci.h>
|
19
|
+
#ifdef __cplusplus
|
20
|
+
}
|
21
|
+
#endif
|
22
|
+
#include "extconf.h"
|
23
|
+
|
24
|
+
#ifdef StringValue
|
25
|
+
/* ruby 1.8 or later */
|
26
|
+
#define RBOCI_NORETURN(x) NORETURN(x)
|
27
|
+
#else
|
28
|
+
/* ruby 1.6 */
|
29
|
+
#define RBOCI_NORETURN(x) x NORETURN
|
30
|
+
#define rb_cstr_to_dbl(p, ignore) strtod((p), 0)
|
31
|
+
#endif
|
32
|
+
|
33
|
+
#ifndef RSTRING_PTR
|
34
|
+
#define RSTRING_PTR(obj) RSTRING(obj)->ptr
|
35
|
+
#endif
|
36
|
+
#ifndef RSTRING_LEN
|
37
|
+
#define RSTRING_LEN(obj) RSTRING(obj)->len
|
38
|
+
#endif
|
39
|
+
|
40
|
+
#ifndef RARRAY_PTR
|
41
|
+
#define RARRAY_PTR(obj) RARRAY(obj)->ptr
|
42
|
+
#endif
|
43
|
+
#ifndef RARRAY_LEN
|
44
|
+
#define RARRAY_LEN(obj) RARRAY(obj)->len
|
45
|
+
#endif
|
46
|
+
|
47
|
+
#define IS_OCI_ERROR(v) (((v) != OCI_SUCCESS) && ((v) != OCI_SUCCESS_WITH_INFO))
|
48
|
+
|
49
|
+
#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 1))
|
50
|
+
/* gcc version >= 3.1 */
|
51
|
+
#define ALWAYS_INLINE inline __attribute__((always_inline))
|
52
|
+
#endif
|
53
|
+
#ifdef _MSC_VER
|
54
|
+
/* microsoft c */
|
55
|
+
#define ALWAYS_INLINE __forceinline
|
56
|
+
#endif
|
57
|
+
|
58
|
+
#ifdef ALWAYS_INLINE
|
59
|
+
/*
|
60
|
+
* I don't like cast because it can suppress warnings but may hide bugs.
|
61
|
+
* These macros make warnings when the source type is invalid.
|
62
|
+
*/
|
63
|
+
#define TO_ORATEXT to_oratext
|
64
|
+
#define TO_CHARPTR to_charptr
|
65
|
+
static ALWAYS_INLINE OraText *to_oratext(char *c)
|
66
|
+
{
|
67
|
+
return (OraText*)c;
|
68
|
+
}
|
69
|
+
static ALWAYS_INLINE char *to_charptr(OraText *c)
|
70
|
+
{
|
71
|
+
return (char*)c;
|
72
|
+
}
|
73
|
+
#else
|
74
|
+
/* if not gcc, use normal cast. */
|
75
|
+
#define TO_ORATEXT(c) ((OraText*)(c))
|
76
|
+
#define TO_CHARPTR(c) ((char*)(c))
|
77
|
+
#endif
|
78
|
+
#define RSTRING_ORATEXT(obj) TO_ORATEXT(RSTRING_PTR(obj))
|
79
|
+
|
80
|
+
enum oci8_bind_type {
|
81
|
+
BIND_STRING,
|
82
|
+
BIND_FIXNUM,
|
83
|
+
BIND_INTEGER_VIA_ORA_NUMBER,
|
84
|
+
BIND_TIME_VIA_ORA_DATE,
|
85
|
+
BIND_FLOAT,
|
86
|
+
BIND_BINARY_DOUBLE,
|
87
|
+
BIND_ORA_DATE,
|
88
|
+
BIND_ORA_NUMBER,
|
89
|
+
BIND_HANDLE
|
90
|
+
};
|
91
|
+
|
92
|
+
/* OraDate - Internal format of DATE */
|
93
|
+
struct ora_date {
|
94
|
+
unsigned char century;
|
95
|
+
unsigned char year;
|
96
|
+
unsigned char month;
|
97
|
+
unsigned char day;
|
98
|
+
unsigned char hour;
|
99
|
+
unsigned char minute;
|
100
|
+
unsigned char second;
|
101
|
+
};
|
102
|
+
typedef struct ora_date ora_date_t;
|
103
|
+
|
104
|
+
/* Member of ora_vnumber_t and ora_bind_handle_t - Internal format of NUMBER */
|
105
|
+
struct ora_number {
|
106
|
+
unsigned char exponent;
|
107
|
+
unsigned char mantissa[20];
|
108
|
+
};
|
109
|
+
typedef struct ora_number ora_number_t;
|
110
|
+
|
111
|
+
/* OraNumber - Internal format of VARNUM */
|
112
|
+
struct ora_vnumber {
|
113
|
+
unsigned char size;
|
114
|
+
struct ora_number num;
|
115
|
+
};
|
116
|
+
typedef struct ora_vnumber ora_vnumber_t;
|
117
|
+
|
118
|
+
/* OCIEnv, OCISvcCtx, OCIServer, OCISession, OCIStmt, OCIDescribe, OCIParam */
|
119
|
+
struct oci8_handle {
|
120
|
+
ub4 type;
|
121
|
+
dvoid *hp;
|
122
|
+
OCIError *errhp;
|
123
|
+
VALUE self;
|
124
|
+
struct oci8_handle *parent;
|
125
|
+
size_t size;
|
126
|
+
struct oci8_handle **children;
|
127
|
+
/* End of common part */
|
128
|
+
union {
|
129
|
+
struct {
|
130
|
+
char is_implicit;
|
131
|
+
} param;
|
132
|
+
#ifndef OCI8_USE_CALLBACK_LOB_READ
|
133
|
+
struct {
|
134
|
+
int char_width;
|
135
|
+
} lob_locator;
|
136
|
+
#endif
|
137
|
+
} u;
|
138
|
+
};
|
139
|
+
typedef struct oci8_handle oci8_handle_t;
|
140
|
+
|
141
|
+
/* OCIBind, OCIDefine */
|
142
|
+
struct oci8_bind_handle {
|
143
|
+
ub4 type;
|
144
|
+
dvoid *hp;
|
145
|
+
OCIError *errhp;
|
146
|
+
VALUE self;
|
147
|
+
struct oci8_handle *parent;
|
148
|
+
size_t size;
|
149
|
+
struct oci8_handle **children;
|
150
|
+
/* End of common part */
|
151
|
+
enum oci8_bind_type bind_type;
|
152
|
+
sb2 ind;
|
153
|
+
ub2 rlen;
|
154
|
+
sb4 value_sz; /* sizeof value */
|
155
|
+
union {
|
156
|
+
struct {
|
157
|
+
sb4 len;
|
158
|
+
char buf[1];
|
159
|
+
} str;
|
160
|
+
long lng;
|
161
|
+
double dbl;
|
162
|
+
ora_date_t od;
|
163
|
+
ora_number_t on;
|
164
|
+
struct {
|
165
|
+
void *hp;
|
166
|
+
VALUE v;
|
167
|
+
VALUE klass;
|
168
|
+
} handle;
|
169
|
+
} value;
|
170
|
+
};
|
171
|
+
typedef struct oci8_bind_handle oci8_bind_handle_t;
|
172
|
+
|
173
|
+
#define Get_Handle(obj, hp) do { \
|
174
|
+
Data_Get_Struct(obj, oci8_handle_t, hp); \
|
175
|
+
} while (0);
|
176
|
+
|
177
|
+
#define Check_Handle(obj, name, hp) do {\
|
178
|
+
if (!rb_obj_is_instance_of(obj, c##name)) { \
|
179
|
+
rb_raise(rb_eTypeError, "invalid argument %s (expect " #name ")", rb_class2name(CLASS_OF(obj))); \
|
180
|
+
} \
|
181
|
+
Data_Get_Struct(obj, oci8_handle_t, hp); \
|
182
|
+
} while (0)
|
183
|
+
|
184
|
+
struct oci8_string {
|
185
|
+
OraText *ptr;
|
186
|
+
ub4 len;
|
187
|
+
};
|
188
|
+
typedef struct oci8_string oci8_string_t;
|
189
|
+
|
190
|
+
#define Get_String(obj, s) do { \
|
191
|
+
if (!NIL_P(obj)) { \
|
192
|
+
Check_Type(obj, T_STRING); \
|
193
|
+
s.ptr = RSTRING_ORATEXT(obj); \
|
194
|
+
s.len = RSTRING_LEN(obj); \
|
195
|
+
} else { \
|
196
|
+
s.ptr = NULL; \
|
197
|
+
s.len = 0; \
|
198
|
+
} \
|
199
|
+
} while (0)
|
200
|
+
|
201
|
+
#define Get_Int_With_Default(argc, pos, vval, cval, def) do { \
|
202
|
+
if (argc >= pos) { \
|
203
|
+
Check_Type(vval, T_FIXNUM); \
|
204
|
+
cval = FIX2INT(vval); \
|
205
|
+
} else { \
|
206
|
+
cval = def; \
|
207
|
+
} \
|
208
|
+
} while (0)
|
209
|
+
|
210
|
+
#define ATTR_FOR_HNDL 1
|
211
|
+
#define ATTR_FOR_DESC 2
|
212
|
+
#define ATTR_FOR_BOTH (ATTR_FOR_HNDL | ATTR_FOR_DESC)
|
213
|
+
struct oci8_attr {
|
214
|
+
const char *name;
|
215
|
+
ub4 attr;
|
216
|
+
char attr_type;
|
217
|
+
VALUE (*get)(oci8_handle_t *hp, ub4 attr);
|
218
|
+
void (*set)(oci8_handle_t *hp, ub4 attr, VALUE value);
|
219
|
+
};
|
220
|
+
typedef struct oci8_attr oci8_attr_t;
|
221
|
+
|
222
|
+
/* Handle */
|
223
|
+
extern VALUE cOCIHandle;
|
224
|
+
extern VALUE cOCIEnv;
|
225
|
+
extern VALUE cOCISvcCtx;
|
226
|
+
extern VALUE cOCIServer;
|
227
|
+
extern VALUE cOCISession;
|
228
|
+
extern VALUE cOCIStmt;
|
229
|
+
extern VALUE cOCIDefine;
|
230
|
+
extern VALUE cOCIBind;
|
231
|
+
extern VALUE cOCIDescribe;
|
232
|
+
|
233
|
+
/* Descriptor */
|
234
|
+
extern VALUE cOCIDescriptor;
|
235
|
+
extern VALUE cOCILobLocator;
|
236
|
+
extern VALUE cOCIFileLocator;
|
237
|
+
extern VALUE cOCIParam;
|
238
|
+
extern VALUE cOCIRowid;
|
239
|
+
|
240
|
+
/* Exception */
|
241
|
+
extern VALUE eOCIException;
|
242
|
+
extern VALUE eOCINoData;
|
243
|
+
extern VALUE eOCIError;
|
244
|
+
extern VALUE eOCIInvalidHandle;
|
245
|
+
extern VALUE eOCINeedData;
|
246
|
+
extern VALUE eOCIStillExecuting;
|
247
|
+
extern VALUE eOCIContinue;
|
248
|
+
extern VALUE eOCISuccessWithInfo;
|
249
|
+
|
250
|
+
/* oracle specific type */
|
251
|
+
extern VALUE cOraDate;
|
252
|
+
extern VALUE cOraNumber;
|
253
|
+
|
254
|
+
/* const.c */
|
255
|
+
void Init_oci8_const(void);
|
256
|
+
extern ID oci8_id_code;
|
257
|
+
extern ID oci8_id_define_array;
|
258
|
+
extern ID oci8_id_bind_hash;
|
259
|
+
extern ID oci8_id_message;
|
260
|
+
extern ID oci8_id_new;
|
261
|
+
extern ID oci8_id_parse_error_offset;
|
262
|
+
extern ID oci8_id_server;
|
263
|
+
extern ID oci8_id_session;
|
264
|
+
extern ID oci8_id_sql;
|
265
|
+
|
266
|
+
/* handle.c */
|
267
|
+
void Init_oci8_handle(void);
|
268
|
+
VALUE oci8_handle_free(VALUE self);
|
269
|
+
void oci8_handle_cleanup(oci8_handle_t *);
|
270
|
+
VALUE oci8_s_new(VALUE self);
|
271
|
+
oci8_handle_t *oci8_make_handle(ub4 type, dvoid *hp, OCIError *errhp, oci8_handle_t *chp, sb4 value_sz);
|
272
|
+
void oci8_link(oci8_handle_t *parent, oci8_handle_t *child);
|
273
|
+
void oci8_unlink(oci8_handle_t *self);
|
274
|
+
|
275
|
+
/* env.c */
|
276
|
+
void Init_oci8_env(void);
|
277
|
+
|
278
|
+
/* error.c */
|
279
|
+
void Init_oci8_error(void);
|
280
|
+
#define oci8_raise(errhp, status, stmthp) oci8_do_raise((errhp), (status), (stmthp), __FILE__, __LINE__)
|
281
|
+
#define oci8_env_raise(envhp, status) oci8_do_env_raise((envhp), (status), __FILE__, __LINE__)
|
282
|
+
RBOCI_NORETURN(void oci8_do_raise(OCIError *, sword status, OCIStmt *, const char *file, int line));
|
283
|
+
RBOCI_NORETURN(void oci8_do_env_raise(OCIEnv *, sword status, const char *file, int line));
|
284
|
+
|
285
|
+
/* svcctx.c */
|
286
|
+
void Init_oci8_svcctx(void);
|
287
|
+
|
288
|
+
/* server.c */
|
289
|
+
void Init_oci8_server(void);
|
290
|
+
VALUE oci8_server_version(VALUE self);
|
291
|
+
#ifdef HAVE_OCISERVERRELEASE
|
292
|
+
VALUE oci8_server_release(VALUE self);
|
293
|
+
#endif
|
294
|
+
VALUE oci8_break(VALUE self);
|
295
|
+
VALUE oci8_reset(VALUE self);
|
296
|
+
|
297
|
+
/* session.c */
|
298
|
+
void Init_oci8_session(void);
|
299
|
+
|
300
|
+
/* stmt.c */
|
301
|
+
void Init_oci8_stmt(void);
|
302
|
+
|
303
|
+
/* bind.c */
|
304
|
+
void Init_oci8_bind(void);
|
305
|
+
void oci8_set_value(oci8_bind_handle_t *, VALUE);
|
306
|
+
VALUE oci8_get_value(oci8_bind_handle_t *);
|
307
|
+
|
308
|
+
/* define.c */
|
309
|
+
void Init_oci8_define(void);
|
310
|
+
|
311
|
+
/* describe.c */
|
312
|
+
void Init_oci8_describe(void);
|
313
|
+
|
314
|
+
/* descriptor.c */
|
315
|
+
void Init_oci8_descriptor(void);
|
316
|
+
VALUE oci8_param_get(VALUE self, VALUE pos);
|
317
|
+
|
318
|
+
/* param.c */
|
319
|
+
void Init_oci8_param(void);
|
320
|
+
|
321
|
+
/* lob.c */
|
322
|
+
void Init_oci8_lob(void);
|
323
|
+
|
324
|
+
/* oradate.c */
|
325
|
+
void Init_ora_date(void);
|
326
|
+
void oci8_set_ora_date(ora_date_t *, int year, int month, int day, int hour, int minute, int second);
|
327
|
+
void oci8_get_ora_date(ora_date_t *, int *year, int *month, int *day, int *hour, int *minute, int *second);
|
328
|
+
|
329
|
+
/* oranumber.c */
|
330
|
+
#define ORA_NUMBER_BUF_SIZE (128 /* max scale */ + 38 /* max precision */ + 1 /* sign */ + 1 /* comma */ + 1 /* nul */)
|
331
|
+
void Init_ora_number(void);
|
332
|
+
void ora_number_to_str(unsigned char *buf, size_t *lenp, ora_number_t *on, unsigned char size);
|
333
|
+
|
334
|
+
/* ocinumber.c */
|
335
|
+
int set_oci_vnumber(ora_vnumber_t *result, VALUE num, OCIError *errhp);
|
336
|
+
|
337
|
+
/* attr.c */
|
338
|
+
void Init_oci8_attr(void);
|
339
|
+
VALUE oci8_attr_get(VALUE self, VALUE vtype);
|
340
|
+
VALUE oci8_attr_set(VALUE self, VALUE vtype, VALUE vvalue);
|
341
|
+
extern oci8_attr_t oci8_attr_list[];
|
342
|
+
extern size_t oci8_attr_size;
|
343
|
+
|
344
|
+
#define _D_ fprintf(stderr, "%s:%d - %s\n", __FILE__, __LINE__, __FUNCTION__)
|
345
|
+
#endif
|