embulk-output-oracle 0.4.5 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +0 -50
- data/build.gradle +1 -0
- data/classpath/embulk-output-jdbc-0.5.0.jar +0 -0
- data/classpath/embulk-output-oracle-0.5.0.jar +0 -0
- data/src/main/java/org/embulk/output/oracle/DirectBatchInsert.java +16 -14
- data/src/main/java/org/embulk/output/oracle/OracleOutputConnection.java +5 -5
- data/src/main/java/org/embulk/output/oracle/oci/ColumnDefinition.java +39 -15
- data/src/main/java/org/embulk/output/oracle/oci/OCI.java +125 -133
- data/src/main/java/org/embulk/output/oracle/oci/OCIWrapper.java +403 -33
- data/src/main/java/org/embulk/output/oracle/oci/RowBuffer.java +39 -40
- data/src/main/java/org/embulk/output/oracle/oci/TableDefinition.java +17 -3
- data/src/test/java/org/embulk/output/oracle/OracleOutputPluginTest.java +2 -2
- data/src/test/java/org/embulk/output/oracle/OracleOutputPluginTestImpl.java +38 -143
- data/src/test/resources/{data → oracle/data}/test1/test1.csv +0 -0
- data/src/test/resources/{yml → oracle/yml}/test-insert-direct-direct-method.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-insert-direct-empty.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-insert-direct-oci-method-split.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-insert-direct-oci-method.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-insert-direct.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-insert-empty.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-insert.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-replace-empty.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-replace-long-name-multibyte.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-replace-long-name.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-replace-oci-method.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-replace.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-string-timestamp.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-truncate-insert-oci-method.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-truncate-insert.yml +1 -1
- data/src/test/resources/{yml → oracle/yml}/test-url.yml +1 -1
- metadata +21 -38
- data/classpath/embulk-output-jdbc-0.4.5.jar +0 -0
- data/classpath/embulk-output-oracle-0.4.5.jar +0 -0
- data/lib/embulk/linux_x64/libembulk-output-oracle.so +0 -0
- data/lib/embulk/win_x64/embulk-output-oracle.dll +0 -0
- data/src/main/cpp/common/dir-path-load.cpp +0 -425
- data/src/main/cpp/common/dir-path-load.h +0 -37
- data/src/main/cpp/common/embulk-output-oracle.cpp +0 -195
- data/src/main/cpp/common/org_embulk_output_oracle_oci_OCI.h +0 -77
- data/src/main/cpp/linux/build.sh +0 -21
- data/src/main/cpp/win/build.bat +0 -32
- data/src/main/cpp/win/dllmain.cpp +0 -25
- data/src/main/cpp/win/embulk-output-oracle.sln +0 -39
- data/src/main/cpp/win/embulk-output-oracle.vcxproj +0 -176
- data/src/test/cpp/common/embulk-output-oracle-test.cpp +0 -69
- data/src/test/cpp/linux/build.sh +0 -19
- data/src/test/cpp/win/build.bat +0 -29
- data/src/test/cpp/win/embulk-output-oracle-test.vcxproj +0 -155
- data/src/test/java/org/embulk/output/tester/EmbulkPluginTester.java +0 -79
- data/src/test/resources/dummy.txt +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f22f18309d604502073834ef9bcac39ba1c7ed2
|
4
|
+
data.tar.gz: f4e47f7c177a3f8d99c0a6ebbc8eb7e3d5882417
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8791a70edae2c6af65682b2e96fb6186563509f7eff0d1c952d6e19b641e663e1f64624f4f57d441d4dc3d8efd8838d0006bc75c537b386c51fae3252e2ebdc
|
7
|
+
data.tar.gz: 713c24da25c5b10dcb47589ec5aa690ea6f64643961f3bf3273eed14bed835c23dec84e8c352bc3fcce04555c4ec00432334b850143fd53ec4f4861708760ecb
|
data/README.md
CHANGED
@@ -61,10 +61,6 @@ It requires Oracle JDBC driver too, but the version 12 driver doesn't work (the
|
|
61
61
|
It requires both Oracle JDBC driver and Oracle Instant Client (version 12.1.0.2.0).
|
62
62
|
You must set the library loading path to the OCI library.
|
63
63
|
|
64
|
-
If you use "oci", platform dependent library written in cpp is required.
|
65
|
-
Windows(x64) library and Linux(x64) are bundled, but others are not bundled.
|
66
|
-
You should build by yourself and set the library loading path to it.
|
67
|
-
|
68
64
|
### Example
|
69
65
|
|
70
66
|
```yaml
|
@@ -107,52 +103,6 @@ out:
|
|
107
103
|
$ ./gradlew gem
|
108
104
|
```
|
109
105
|
|
110
|
-
#### Build environment for native library
|
111
|
-
|
112
|
-
For Windows (x64)
|
113
|
-
|
114
|
-
(1) Install JDK.
|
115
|
-
|
116
|
-
(2) Install Microsoft Visual Studio (only 2010 is tested).
|
117
|
-
|
118
|
-
(3) Install Oracle Instant Client SDK 11.1.0.6.0 for Microsoft Windows (x64).
|
119
|
-
|
120
|
-
(4) Set environment variables.
|
121
|
-
|
122
|
-
* JAVA_HOME
|
123
|
-
* OCI\_SDK_PATH ("sdk" directory of Oracle Instant Client)
|
124
|
-
|
125
|
-
(5) Open src/main/cpp/win/embulk-output-oracle.sln by Visual Studio and build.
|
126
|
-
|
127
|
-
For Windows command line, the following are needed in addition to (1) - (4).
|
128
|
-
|
129
|
-
(6) Set environment variables.
|
130
|
-
|
131
|
-
* MSVC_PATH (ex. C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC)
|
132
|
-
* MSSDK_PATH (ex. C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A)
|
133
|
-
|
134
|
-
(7) Execute src/main/cpp/win/build.bat .
|
135
|
-
|
136
|
-
|
137
|
-
For Linux (x64) (only Ubuntu Server 14.04 is tested)
|
138
|
-
|
139
|
-
(1) Install JDK.
|
140
|
-
|
141
|
-
(2) Install gcc and g++ .
|
142
|
-
|
143
|
-
(3) Install Oracle Instant Client Basic and SDK 11.1.0.6.0 for Linux (x64).
|
144
|
-
|
145
|
-
(4) Create symbolic links of OCI libraries.
|
146
|
-
|
147
|
-
ln -s libocci.so.11.1 libocci.so
|
148
|
-
ln -s libclntsh.so.11.1 libclntsh.so
|
149
|
-
|
150
|
-
(5) Set environment variables.
|
151
|
-
|
152
|
-
* JAVA_HOME
|
153
|
-
* OCI_PATH (the directory of Oracle Instant Client Basic and the parent of the "sdk" directory)
|
154
|
-
|
155
|
-
(6) Execute src/main/cpp/linux/build.sh .
|
156
106
|
|
157
107
|
***
|
158
108
|
<img src="https://www.yourkit.com/images/yklogo.png" alt="YourKit"/> is used to improve performance of embulk-output-oracle.
|
data/build.gradle
CHANGED
Binary file
|
Binary file
|
@@ -8,18 +8,20 @@ import java.text.DateFormat;
|
|
8
8
|
import java.text.SimpleDateFormat;
|
9
9
|
import java.util.ArrayList;
|
10
10
|
import java.util.Arrays;
|
11
|
-
import java.util.List;
|
12
11
|
import java.util.Calendar;
|
12
|
+
import java.util.List;
|
13
|
+
|
13
14
|
import org.embulk.output.jdbc.BatchInsert;
|
14
15
|
import org.embulk.output.jdbc.JdbcColumn;
|
15
16
|
import org.embulk.output.jdbc.JdbcSchema;
|
16
17
|
import org.embulk.output.oracle.oci.ColumnDefinition;
|
18
|
+
import org.embulk.output.oracle.oci.OCI;
|
17
19
|
import org.embulk.output.oracle.oci.OCIManager;
|
18
20
|
import org.embulk.output.oracle.oci.OCIWrapper;
|
19
21
|
import org.embulk.output.oracle.oci.RowBuffer;
|
20
22
|
import org.embulk.output.oracle.oci.TableDefinition;
|
21
|
-
import org.embulk.spi.time.Timestamp;
|
22
23
|
import org.embulk.spi.Exec;
|
24
|
+
import org.embulk.spi.time.Timestamp;
|
23
25
|
import org.slf4j.Logger;
|
24
26
|
|
25
27
|
public class DirectBatchInsert implements BatchInsert
|
@@ -87,9 +89,9 @@ public class DirectBatchInsert implements BatchInsert
|
|
87
89
|
case Types.LONGVARCHAR:
|
88
90
|
case Types.CLOB:
|
89
91
|
columns.add(new ColumnDefinition(insertColumn.getName(),
|
90
|
-
|
92
|
+
OCI.SQLT_CHR,
|
91
93
|
insertColumn.getDataLength(),
|
92
|
-
charset
|
94
|
+
charset));
|
93
95
|
break;
|
94
96
|
|
95
97
|
case Types.NCHAR:
|
@@ -97,9 +99,9 @@ public class DirectBatchInsert implements BatchInsert
|
|
97
99
|
case Types.LONGNVARCHAR:
|
98
100
|
case Types.NCLOB:
|
99
101
|
columns.add(new ColumnDefinition(insertColumn.getName(),
|
100
|
-
|
102
|
+
OCI.SQLT_CHR,
|
101
103
|
insertColumn.getDataLength(),
|
102
|
-
nationalCharset
|
104
|
+
nationalCharset));
|
103
105
|
break;
|
104
106
|
|
105
107
|
case Types.DECIMAL:
|
@@ -110,9 +112,9 @@ public class DirectBatchInsert implements BatchInsert
|
|
110
112
|
size += 1;
|
111
113
|
}
|
112
114
|
columns.add(new ColumnDefinition(insertColumn.getName(),
|
113
|
-
|
115
|
+
OCI.SQLT_CHR,
|
114
116
|
size,
|
115
|
-
charset
|
117
|
+
charset));
|
116
118
|
break;
|
117
119
|
|
118
120
|
case Types.DATE:
|
@@ -130,9 +132,9 @@ public class DirectBatchInsert implements BatchInsert
|
|
130
132
|
}
|
131
133
|
formats[i] = javaFormat;
|
132
134
|
columns.add(new ColumnDefinition(insertColumn.getName(),
|
133
|
-
|
135
|
+
OCI.SQLT_CHR,
|
134
136
|
javaFormat.format(dummy).length(),
|
135
|
-
charset
|
137
|
+
charset,
|
136
138
|
oracleFormat));
|
137
139
|
break;
|
138
140
|
|
@@ -144,14 +146,14 @@ public class DirectBatchInsert implements BatchInsert
|
|
144
146
|
|
145
147
|
rowSize = 0;
|
146
148
|
for (ColumnDefinition column : columns) {
|
147
|
-
rowSize += column.
|
149
|
+
rowSize += column.getDataSize();
|
148
150
|
}
|
149
151
|
|
150
152
|
TableDefinition tableDefinition = new TableDefinition("\"" + loadTable + "\"", columns);
|
151
153
|
ociKey = Arrays.asList(database, user, loadTable);
|
152
154
|
ociManager.open(ociKey, database, user, password, tableDefinition);
|
153
155
|
|
154
|
-
buffer = new RowBuffer(tableDefinition, Math.max(batchSize / rowSize, 8)
|
156
|
+
buffer = new RowBuffer(tableDefinition, Math.max(batchSize / rowSize, 8));
|
155
157
|
}
|
156
158
|
|
157
159
|
@Override
|
@@ -186,7 +188,7 @@ public class DirectBatchInsert implements BatchInsert
|
|
186
188
|
|
187
189
|
OCIWrapper oci = ociManager.get(ociKey);
|
188
190
|
synchronized (oci) {
|
189
|
-
oci.loadBuffer(buffer
|
191
|
+
oci.loadBuffer(buffer);
|
190
192
|
}
|
191
193
|
|
192
194
|
totalRows += buffer.getRowCount();
|
@@ -269,7 +271,7 @@ public class DirectBatchInsert implements BatchInsert
|
|
269
271
|
@Override
|
270
272
|
public void setNString(String v) throws IOException, SQLException
|
271
273
|
{
|
272
|
-
buffer.addValue(v
|
274
|
+
buffer.addValue(v);
|
273
275
|
}
|
274
276
|
|
275
277
|
@Override
|
@@ -137,7 +137,7 @@ public class OracleOutputConnection
|
|
137
137
|
public synchronized OracleCharset getOracleCharset() throws SQLException
|
138
138
|
{
|
139
139
|
if (charset == null) {
|
140
|
-
|
140
|
+
charset = getOracleCharset("NLS_CHARACTERSET", "UTF8");
|
141
141
|
}
|
142
142
|
return charset;
|
143
143
|
}
|
@@ -145,7 +145,7 @@ public class OracleOutputConnection
|
|
145
145
|
public synchronized OracleCharset getOracleNationalCharset() throws SQLException
|
146
146
|
{
|
147
147
|
if (nationalCharset == null) {
|
148
|
-
|
148
|
+
nationalCharset = getOracleCharset("NLS_NCHAR_CHARACTERSET", "AL16UTF16");
|
149
149
|
}
|
150
150
|
return nationalCharset;
|
151
151
|
}
|
@@ -154,7 +154,7 @@ public class OracleOutputConnection
|
|
154
154
|
{
|
155
155
|
String charsetName = defaultCharsetName;
|
156
156
|
try (PreparedStatement statement = connection.prepareStatement("SELECT VALUE FROM NLS_DATABASE_PARAMETERS WHERE PARAMETER=?")) {
|
157
|
-
|
157
|
+
statement.setString(1, parameterName);
|
158
158
|
try (ResultSet resultSet = statement.executeQuery()) {
|
159
159
|
if (resultSet.next()) {
|
160
160
|
String nlsCharacterSet = resultSet.getString(1);
|
@@ -180,14 +180,14 @@ public class OracleOutputConnection
|
|
180
180
|
}
|
181
181
|
|
182
182
|
|
183
|
-
private static final String[]
|
183
|
+
private static final String[] SIZE_TYPE_NAMES = {
|
184
184
|
"VARCHAR2", "NVARCHAR2",
|
185
185
|
};
|
186
186
|
|
187
187
|
@Override
|
188
188
|
protected ColumnDeclareType getColumnDeclareType(String convertedTypeName, JdbcColumn col)
|
189
189
|
{
|
190
|
-
if (Arrays.asList(
|
190
|
+
if (Arrays.asList(SIZE_TYPE_NAMES).contains(convertedTypeName)) {
|
191
191
|
return ColumnDeclareType.SIZE;
|
192
192
|
}
|
193
193
|
return super.getColumnDeclareType(convertedTypeName, col);
|
@@ -1,28 +1,52 @@
|
|
1
1
|
package org.embulk.output.oracle.oci;
|
2
2
|
|
3
|
+
import org.embulk.output.oracle.OracleCharset;
|
4
|
+
|
3
5
|
public class ColumnDefinition
|
4
6
|
{
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
public final int columnSize;
|
11
|
-
public final short charsetId;
|
12
|
-
public final String columnDateFormat;
|
7
|
+
private final String columnName;
|
8
|
+
private final int dataType;
|
9
|
+
private final int dataSize;
|
10
|
+
private final OracleCharset charset;
|
11
|
+
private final String dateFormat;
|
13
12
|
|
14
13
|
|
15
|
-
public ColumnDefinition(String columnName, int
|
14
|
+
public ColumnDefinition(String columnName, int dataType, int dataSize, OracleCharset charset, String dateFormat)
|
16
15
|
{
|
17
16
|
this.columnName = columnName;
|
18
|
-
this.
|
19
|
-
this.
|
20
|
-
this.
|
21
|
-
this.
|
17
|
+
this.dataType = dataType;
|
18
|
+
this.dataSize = dataSize;
|
19
|
+
this.charset = charset;
|
20
|
+
this.dateFormat = dateFormat;
|
21
|
+
}
|
22
|
+
|
23
|
+
public ColumnDefinition(String columnName, int columnType, int columnSize, OracleCharset charset)
|
24
|
+
{
|
25
|
+
this(columnName, columnType, columnSize, charset, null);
|
26
|
+
}
|
27
|
+
|
28
|
+
public String getColumnName()
|
29
|
+
{
|
30
|
+
return columnName;
|
31
|
+
}
|
32
|
+
|
33
|
+
public int getDataType()
|
34
|
+
{
|
35
|
+
return dataType;
|
36
|
+
}
|
37
|
+
|
38
|
+
public int getDataSize()
|
39
|
+
{
|
40
|
+
return dataSize;
|
41
|
+
}
|
42
|
+
|
43
|
+
public OracleCharset getCharset()
|
44
|
+
{
|
45
|
+
return charset;
|
22
46
|
}
|
23
47
|
|
24
|
-
public
|
48
|
+
public String getDateFormat()
|
25
49
|
{
|
26
|
-
|
50
|
+
return dateFormat;
|
27
51
|
}
|
28
52
|
}
|
@@ -1,139 +1,131 @@
|
|
1
1
|
package org.embulk.output.oracle.oci;
|
2
2
|
|
3
|
-
import
|
4
|
-
import
|
5
|
-
import
|
6
|
-
import
|
7
|
-
import
|
3
|
+
import jnr.ffi.Pointer;
|
4
|
+
import jnr.ffi.types.size_t;
|
5
|
+
import jnr.ffi.types.u_int16_t;
|
6
|
+
import jnr.ffi.types.u_int32_t;
|
7
|
+
import jnr.ffi.types.u_int8_t;
|
8
8
|
|
9
|
-
import org.embulk.spi.Exec;
|
10
|
-
import org.slf4j.Logger;
|
11
9
|
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
public class OCI
|
10
|
+
public interface OCI
|
16
11
|
{
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
static
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
logger.error("OCI : cannot create temporary library.");
|
138
|
-
}
|
12
|
+
static short OCI_SUCCESS = 0;
|
13
|
+
static short OCI_ERROR = -1;
|
14
|
+
static short OCI_INVALID_HANDLE = -2;
|
15
|
+
static short OCI_NO_DATA = 100;
|
16
|
+
static short OCI_CONTINUE = -24200;
|
17
|
+
|
18
|
+
|
19
|
+
static int OCI_THREADED = 1;
|
20
|
+
static int OCI_OBJECT = 2;
|
21
|
+
|
22
|
+
static int OCI_HTYPE_ENV = 1;
|
23
|
+
static int OCI_HTYPE_ERROR = 2;
|
24
|
+
static int OCI_HTYPE_SVCCTX = 3;
|
25
|
+
static int OCI_HTYPE_DIRPATH_CTX = 14;
|
26
|
+
static int OCI_HTYPE_DIRPATH_COLUMN_ARRAY = 15;
|
27
|
+
static int OCI_HTYPE_DIRPATH_STREAM = 16;
|
28
|
+
|
29
|
+
static int OCI_ATTR_DATA_SIZE = 1;
|
30
|
+
static int OCI_ATTR_DATA_TYPE = 2;
|
31
|
+
static int OCI_ATTR_NAME = 4;
|
32
|
+
static int OCI_ATTR_ROW_COUNT = 9;
|
33
|
+
static int OCI_ATTR_CHARSET_ID = 31;
|
34
|
+
static int OCI_ATTR_DATEFORMAT = 75;
|
35
|
+
static int OCI_ATTR_NUM_ROWS = 81;
|
36
|
+
static int OCI_ATTR_NUM_COLS = 102;
|
37
|
+
static int OCI_ATTR_LIST_COLUMNS = 103;
|
38
|
+
|
39
|
+
static int OCI_DTYPE_PARAM = 53;
|
40
|
+
|
41
|
+
static byte OCI_DIRPATH_COL_COMPLETE = 0;
|
42
|
+
|
43
|
+
static int SQLT_CHR = 1;
|
44
|
+
static int SQLT_INT = 3;
|
45
|
+
|
46
|
+
short OCIErrorGet(Pointer hndlp,
|
47
|
+
@u_int32_t int recordno,
|
48
|
+
String sqlstate,
|
49
|
+
Pointer errcodep,
|
50
|
+
Pointer bufp,
|
51
|
+
@u_int32_t int bufsiz,
|
52
|
+
@u_int32_t int type);
|
53
|
+
|
54
|
+
short OCIEnvCreate(Pointer envp,
|
55
|
+
@u_int32_t int mode,
|
56
|
+
Pointer ctxp,
|
57
|
+
Pointer malocfp,
|
58
|
+
Pointer ralocfp,
|
59
|
+
Pointer mfreefp,
|
60
|
+
@size_t long xtramemSz,
|
61
|
+
Pointer usrmempp);
|
62
|
+
|
63
|
+
short OCIHandleAlloc(Pointer parenth,
|
64
|
+
Pointer hndlpp,
|
65
|
+
@u_int32_t int type,
|
66
|
+
@size_t long xtramemSz,
|
67
|
+
Pointer usrmempp);
|
68
|
+
|
69
|
+
short OCIHandleFree(Pointer hndlpp,
|
70
|
+
@u_int32_t int type);
|
71
|
+
|
72
|
+
short OCILogon(Pointer envhp,
|
73
|
+
Pointer errhp,
|
74
|
+
Pointer svchp,
|
75
|
+
String username,
|
76
|
+
@u_int32_t int usernameLen,
|
77
|
+
String password,
|
78
|
+
@u_int32_t int passwordLen,
|
79
|
+
String dbname,
|
80
|
+
@u_int32_t int dbnameLen);
|
81
|
+
|
82
|
+
short OCILogoff(Pointer svchp,
|
83
|
+
Pointer errhp);
|
84
|
+
|
85
|
+
short OCIAttrSet(Pointer trgthndlp,
|
86
|
+
@u_int32_t int trghndltyp,
|
87
|
+
Pointer attributep,
|
88
|
+
@u_int32_t int size,
|
89
|
+
@u_int32_t int attrtype,
|
90
|
+
Pointer errhp);
|
91
|
+
|
92
|
+
short OCIAttrGet(Pointer trgthndlp,
|
93
|
+
@u_int32_t int trghndltyp,
|
94
|
+
Pointer attributep,
|
95
|
+
Pointer sizep,
|
96
|
+
@u_int32_t int attrtype,
|
97
|
+
Pointer errhp);
|
98
|
+
|
99
|
+
short OCIParamGet(Pointer hndlp,
|
100
|
+
@u_int32_t int htype,
|
101
|
+
Pointer errhp,
|
102
|
+
Pointer parmdpp,
|
103
|
+
@u_int32_t int pos);
|
104
|
+
|
105
|
+
short OCIDescriptorFree(Pointer descp, @u_int32_t int type);
|
106
|
+
|
107
|
+
short OCIDirPathPrepare(Pointer dpctx, Pointer svchp, Pointer errhp);
|
108
|
+
|
109
|
+
short OCIDirPathColArrayEntrySet(Pointer dpca,
|
110
|
+
Pointer errhp,
|
111
|
+
@u_int32_t int rownum,
|
112
|
+
@u_int16_t short colIdx,
|
113
|
+
Pointer cvalp,
|
114
|
+
@u_int32_t int size,
|
115
|
+
@u_int8_t byte cflg);
|
116
|
+
|
117
|
+
short OCIDirPathStreamReset(Pointer dpstr, Pointer errhp);
|
118
|
+
|
119
|
+
short OCIDirPathColArrayToStream(Pointer dpca,
|
120
|
+
Pointer dpctx,
|
121
|
+
Pointer dpstr,
|
122
|
+
Pointer errhp,
|
123
|
+
@u_int32_t int rowcnt,
|
124
|
+
@u_int32_t int rowoff);
|
125
|
+
|
126
|
+
short OCIDirPathLoadStream(Pointer dpctx, Pointer dpstr, Pointer errhp);
|
127
|
+
|
128
|
+
short OCIDirPathFinish(Pointer dpctx, Pointer errhp);
|
129
|
+
|
130
|
+
short OCIDirPathAbort(Pointer dpctx, Pointer errhp);
|
139
131
|
}
|