1 PACKAGE DBMS_LDAP AUTHID CURRENT_USER AS
2
3 VERSION CONSTANT VARCHAR2(256) := '2';
4 INTERFACE_VERSION CONSTANT VARCHAR2(256) := '2';
5
6 --
7 -- DBMS_LDAP data type definitions
8 --
9
10 -- We use RAW(32) as a data structure to store external pointers
11 -- It is big enough to store 256 bit pointers!
12
13 -- this data structure holds a pointer to an LDAP session
14 SUBTYPE SESSION IS RAW(32);
15
16 -- this data structure holds a pointer to an LDAP message
17 SUBTYPE MESSAGE IS RAW(32);
18
19 -- this data structure holds a pointer to an LDAP mod array
20 SUBTYPE MOD_ARRAY IS RAW(32);
21
22 -- this data structure is used to hold binary value
23 SUBTYPE BERVAL IS raw(32000);
24
25 -- this data structure is used to pass time limit information to
26 -- the LDAP api.
27 TYPE TIMEVAL IS RECORD
28 ( seconds PLS_INTEGER,
29 useconds PLS_INTEGER
30 );
31
32 -- this data structure is used to pass LDAP control to the api.
33 TYPE ldapcontrol IS RECORD
34 (ldctl_oid VARCHAR2(256),
35 ldctl_value BERVAL,
36 ldctl_iscritical VARCHAR2(1));
37
38 -- this data structure holds a pointer to the BER Element used
39 -- for decoding the incoming message
40 SUBTYPE BER_ELEMENT is RAW(32);
41
42 -- this data structure is used to hold a list of values
43 TYPE STRING_COLLECTION is TABLE of VARCHAR2(32767)
44 INDEX BY BINARY_INTEGER;
45
46 -- this data structure is used to hold a list of binary values
47 TYPE BINVAL_COLLECTION is TABLE of RAW(32767)
48 INDEX BY BINARY_INTEGER;
49
50 -- this data structure is used to hold a list of berval values
51 TYPE BERVAL_COLLECTION is TABLE of RAW(32767)
52 INDEX BY BINARY_INTEGER;
53
54 -- this data structure is used to hold a list of berval values
55 TYPE BLOB_COLLECTION is TABLE of BLOB
56 INDEX BY BINARY_INTEGER;
57
58
59
60
61 --
62 -- DBMS_LDAP function definitions
63 --
64
65 -- Checks the Support for Interface Version.
66 FUNCTION check_interface_version(interface_version IN VARCHAR2)
67 RETURN PLS_INTEGER;
68
69 -- Initializes the LDAP library and return a session handler
70 -- for use in subsequent calls.
71 FUNCTION init (hostname IN VARCHAR2,
72 portnum IN PLS_INTEGER )
73 RETURN SESSION;
74
75
76 -- Synchronously authenticates to the directory server using
77 -- a Distinguished Name and password.
78 FUNCTION simple_bind_s (ld IN SESSION,
79 dn IN VARCHAR2,
80 passwd IN VARCHAR2)
81 RETURN PLS_INTEGER;
82
83
84 -- Synchronously authenticates to the directory server using
85 -- a Distinguished Name and some arbitrary credentials.
86 FUNCTION bind_s (ld IN SESSION,
87 dn IN VARCHAR2,
88 cred IN VARCHAR2,
89 meth IN PLS_INTEGER )
90 RETURN PLS_INTEGER;
91
92
93 -- Synchronously disposes of an LDAP session, freeing all
94 -- associated resources.
95 FUNCTION unbind_s (ld IN OUT SESSION )
96 RETURN PLS_INTEGER;
97
98
99 -- Compares a value with a attribute value contained in an
100 -- entry.
101 FUNCTION compare_s (ld IN SESSION,
102 dn IN VARCHAR2,
103 attr IN VARCHAR2,
104 value IN VARCHAR2)
105 RETURN PLS_INTEGER;
106
107
108 -- Searches for directory entries.
109 FUNCTION search_s (ld IN SESSION,
110 base IN VARCHAR2,
111 scope IN PLS_INTEGER,
112 filter IN VARCHAR2,
113 attrs IN STRING_COLLECTION,
114 attronly IN PLS_INTEGER,
115 res OUT MESSAGE)
116 RETURN PLS_INTEGER;
117
118
119 -- Searches for directory entries, respecting a local timeout.
120 FUNCTION search_st (ld IN SESSION,
121 base IN VARCHAR2,
122 scope IN PLS_INTEGER,
123 filter IN VARCHAR2,
124 attrs IN STRING_COLLECTION,
125 attronly IN PLS_INTEGER,
126 tv IN TIMEVAL,
127 res OUT MESSAGE)
128 RETURN PLS_INTEGER;
129
130
131 -- Returns the first entry in a chain of results.
132 FUNCTION first_entry (ld IN SESSION,
133 msg IN MESSAGE )
134 RETURN MESSAGE;
135
136
137 -- Returns the next entry in a chain of search results.
138 FUNCTION next_entry (ld IN SESSION,
139 msg IN MESSAGE )
140 RETURN MESSAGE;
141
142
143 -- Determines the number of entries in an LDAP result
144 -- message chain.
145 FUNCTION count_entries (ld IN SESSION,
146 msg IN MESSAGE )
147 RETURN PLS_INTEGER;
148
149
150 -- Returns the first attribute in an entry.
151 FUNCTION first_attribute (ld IN SESSION,
152 ldapentry IN MESSAGE,
153 ber_elem OUT BER_ELEMENT)
154 RETURN VARCHAR2;
155
156
157 -- Returns the next attribute contained in an entry.
158 FUNCTION next_attribute (ld IN SESSION,
159 ldapentry IN MESSAGE,
160 ber_elem IN BER_ELEMENT)
161 RETURN VARCHAR2;
162
163
164 -- Retrieves the Distinguished Name of an entry.
165 FUNCTION get_dn(ld IN SESSION,
166 ldapentry IN MESSAGE)
167 RETURN VARCHAR2;
168
169 -- Retrieves values associated with a char attribute for a given entry
170 FUNCTION get_values(ld IN SESSION,
171 ldapentry IN MESSAGE,
172 attr IN VARCHAR2)
173 RETURN STRING_COLLECTION;
174
175 -- Retrieves binary values associated with an attribute for a given entry
176 FUNCTION get_values_len(ld IN SESSION,
177 ldapentry IN MESSAGE,
178 attr IN VARCHAR2)
179 RETURN BINVAL_COLLECTION;
180
181 -- Retrieves large binary values(greater than 32kb)
182 -- associated with an attribute for a given entry
183 FUNCTION get_values_blob(ld IN SESSION,
184 ldapentry IN MESSAGE,
185 attr IN VARCHAR2)
186 RETURN BLOB_COLLECTION;
187
188 -- Deletes an entry from the LDAP directory. The caller is
189 -- blocked until the deletion is complete.
190 FUNCTION delete_s(ld IN SESSION,
191 entrydn IN VARCHAR2)
192 RETURN PLS_INTEGER;
193
194 -- Deletes an entry from the LDAP directory.
195 FUNCTION delete(ld IN SESSION,
196 entrydn IN VARCHAR2)
197 RETURN PLS_INTEGER;
198
199 -- Renames the given entry to have the new relative
200 -- distinguished name. The caller is blocked until the
201 -- renaming is complete.
202 FUNCTION modrdn2_s(ld IN SESSION,
203 entrydn IN VARCHAR2,
204 newrdn IN VARCHAR2,
205 deleteoldrdn IN PLS_INTEGER)
206 RETURN PLS_INTEGER;
207
208
209 -- Gets the string representation of an LDAP return code
210 FUNCTION err2string( ldap_err IN PLS_INTEGER )
211 RETURN VARCHAR2;
212
213
214 -- Gets the pointer of the ldapmod representation
215 -- which contains size, count, and a pointer to an array
216 -- of ldapmod structure.
217 -- ldapmod structure contains mod_op, mod_type, and an
218 -- array of string/berval.
219 -- If the return value is NULL, then there is an error.
220 FUNCTION create_mod_array(num IN PLS_INTEGER)
221 RETURN MOD_ARRAY;
222
223
224 -- Populates the ldapmod structure, string value.
225 -- If the return modptr is NULL, then there is an error.
226 PROCEDURE populate_mod_array(modptr IN MOD_ARRAY,
227 mod_op IN PLS_INTEGER,
228 mod_type IN VARCHAR2,
229 modval IN STRING_COLLECTION);
230
231
232 -- Populates the ldapmod structure, binary value.
233 -- If the return modptr is NULL, then there is an error.
234 PROCEDURE populate_mod_array(modptr IN MOD_ARRAY,
235 mod_op IN PLS_INTEGER,
236 mod_type IN VARCHAR2,
237 modbval IN BERVAL_COLLECTION);
238
239 -- Populates the ldapmod structure, large binary value (greater than 32kb).
240 -- If the return modptr is NULL, then there is an error.
241 PROCEDURE populate_mod_array(modptr IN MOD_ARRAY,
242 mod_op IN PLS_INTEGER,
243 mod_type IN VARCHAR2,
244 modbval IN BLOB_COLLECTION);
245
246
247 -- Modifies an existing LDAP directory entry. The caller is
248 -- blocked until the modification is complete.
249 FUNCTION modify_s(ld IN SESSION,
250 entrydn IN VARCHAR2,
251 modptr IN MOD_ARRAY)
252 RETURN PLS_INTEGER;
253
254 -- Adds a new entry to the LDAP directory. The caller is
255 -- blocked until the addition is complete.
256 FUNCTION add_s(ld IN SESSION,
257 entrydn IN VARCHAR2,
258 modptr IN MOD_ARRAY)
259 RETURN PLS_INTEGER;
260
261
262 -- Frees up the memory used by the ldapmod representation (array).
263 PROCEDURE free_mod_array(modptr IN MOD_ARRAY);
264
265
266 -- Counts the number of values returned by get_values()
267 FUNCTION count_values(vals IN STRING_COLLECTION)
268 RETURN PLS_INTEGER;
269
270
271 -- Counts the number of values returned by get_values_len()
272 FUNCTION count_values_len(vals IN BINVAL_COLLECTION)
273 RETURN PLS_INTEGER;
274
275 -- Counts the number of values returned by get_values_blob()
276 FUNCTION count_values_blob(vals IN BLOB_COLLECTION)
277 RETURN PLS_INTEGER;
278
279 -- Frees the memory associated with binary attribute values
280 -- that were returned by get_values_blob() function.
281 PROCEDURE value_free_blob(vals IN OUT BLOB_COLLECTION);
282
283
284
285 -- Performs modify dn operation
286 FUNCTION rename_s(ld IN SESSION,
287 dn IN VARCHAR2,
288 newrdn IN VARCHAR2,
289 newparent IN VARCHAR2,
290 deleteoldrdn IN PLS_INTEGER,
291 serverctrls IN LDAPCONTROL DEFAULT NULL,
292 clientctrls IN LDAPCONTROL DEFAULT NULL)
293 RETURN PLS_INTEGER;
294
295
296 -- Breaks a Distinguished Name (DN) up into its components
297 FUNCTION explode_dn(dn IN VARCHAR2,
298 notypes IN PLS_INTEGER)
299 RETURN STRING_COLLECTION;
300
301
302
303 -- Establishes a SSL connection
304 FUNCTION open_ssl(ld IN SESSION,
305 sslwrl IN VARCHAR2,
306 sslwalletpasswd IN VARCHAR2,
307 sslauth IN PLS_INTEGER)
308 RETURN PLS_INTEGER;
309
310 FUNCTION get_session_info(ld IN SESSION,
311 data_type IN PLS_INTEGER,
312 data OUT VARCHAR2)
313 RETURN PLS_INTEGER;
314
315 FUNCTION msgfree(lm IN MESSAGE)
316 RETURN PLS_INTEGER;
317 PROCEDURE ber_free(ber IN BER_ELEMENT,
318 freebuf IN PLS_INTEGER);
319
320
321 FUNCTION nls_convert_to_utf8 ( data_local IN VARCHAR2)
322
323 RETURN VARCHAR2;
324
325 FUNCTION nls_convert_to_utf8 ( data_local IN STRING_COLLECTION)
326
327 RETURN STRING_COLLECTION;
328
329 FUNCTION nls_convert_from_utf8 ( data_utf8 IN VARCHAR2)
330
331 RETURN VARCHAR2;
332
333 FUNCTION nls_convert_from_utf8 ( data_utf8 IN STRING_COLLECTION)
334
335 RETURN STRING_COLLECTION;
336
337 FUNCTION nls_get_dbcharset_name
338
339 RETURN VARCHAR2;
340 -------------------- Tracing functions ----------------
341 ---- To be used by Oracle Support Analysts ONLY -------
342 -------------------------------------------------------
343 PROCEDURE set_trace_level(new_trace_level IN PLS_INTEGER);
344 FUNCTION get_trace_level RETURN PLS_INTEGER;
345 ---------------- End of Trace Functions -----------------
346
347
348 -- LDAP Flag definitions
349
350 -- set use_exception flag to FALSE: not use exception (return error code)
351 -- set use_exception flag to TRUE: use exception.
352 USE_EXCEPTION BOOLEAN DEFAULT TRUE;
353
354 -- set user_conversion flag to TRUE: All the input string data to the
355 -- Package functions would
356 -- be converted from database characterset
357 -- to UTF8 character set.
361 -- set user_conversion flag to FALSE: No conversions would be done.
358 -- All the output string data would be
359 -- converted from UTF8 character set to
360 -- database character set.
362 UTF8_CONVERSION BOOLEAN DEFAULT TRUE;
363
364
365 --
366 -- LDAP constant definitions
367 --
368
369 PORT CONSTANT NUMBER := 389;
370 SSL_PORT CONSTANT NUMBER := 636;
371
372 -- various options that can be set/unset
373 OPT_DESC CONSTANT NUMBER := 1;
374 OPT_DEREF CONSTANT NUMBER := 2;
375 OPT_SIZELIMIT CONSTANT NUMBER := 3;
376 OPT_TIMELIMIT CONSTANT NUMBER := 4;
377 OPT_THREAD_FN_PTRS CONSTANT NUMBER := 5;
378 OPT_REBIND_FN CONSTANT NUMBER := 6;
379 OPT_REBIND_ARG CONSTANT NUMBER := 7;
380 OPT_REFERRALS CONSTANT NUMBER := 8;
381 OPT_RESTART CONSTANT NUMBER := 9;
382 OPT_SSL CONSTANT NUMBER := 10;
383 OPT_IO_FN_PTRS CONSTANT NUMBER := 11;
384 OPT_CACHE_FN_PTRS CONSTANT NUMBER := 13;
385 OPT_CACHE_STRATEGY CONSTANT NUMBER := 14;
386 OPT_CACHE_ENABLE CONSTANT NUMBER := 15;
387 OPT_REFERRAL_HOP_LIMIT CONSTANT NUMBER := 16;
388 OPT_PROTOCOL_VERSION CONSTANT NUMBER := 17;
389 OPT_SERVER_CONTROLS CONSTANT NUMBER := 18;
390 OPT_CLIENT_CONTROLS CONSTANT NUMBER := 19;
391 OPT_PREFERRED_LANGUAGE CONSTANT NUMBER := 20;
392 OPT_ERROR_NUMBER CONSTANT NUMBER := 49;
393 OPT_ERROR_STRING CONSTANT NUMBER := 50;
394
395
396 -- for on/off options
397 OPT_ON CONSTANT NUMBER := 1;
398 OPT_OFF CONSTANT NUMBER := 0;
399
400 -- SSL Authentication modes
401 GSLC_SSL_NO_AUTH CONSTANT NUMBER := 1;
402 GSLC_SSL_ONEWAY_AUTH CONSTANT NUMBER := 32;
403 GSLC_SSL_TWOWAY_AUTH CONSTANT NUMBER := 64;
404
405 -- search scopes
406 SCOPE_BASE CONSTANT NUMBER := 0;
407 SCOPE_ONELEVEL CONSTANT NUMBER := 1;
408 SCOPE_SUBTREE CONSTANT NUMBER := 2;
409
410 -- for modifications
411 MOD_ADD CONSTANT NUMBER := 0;
412 MOD_DELETE CONSTANT NUMBER := 1;
413 MOD_REPLACE CONSTANT NUMBER := 2;
414 MOD_BVALUES CONSTANT NUMBER := 128;
415
416 /* authentication methods available */
417 AUTH_NONE CONSTANT NUMBER := 0;
418 AUTH_SIMPLE CONSTANT NUMBER := 128; -- context specific + primitive
419 AUTH_SASL CONSTANT NUMBER := 163; -- v3 SASL
420
421 -- structure for representing an LDAP server connection
422 CONNST_NEEDSOCKET CONSTANT NUMBER := 1;
423 CONNST_CONNECTING CONSTANT NUMBER := 2;
424 CONNST_CONNECTED CONSTANT NUMBER := 3;
425
426 -- structure used to track outstanding requests
427 REQST_INPROGRESS CONSTANT NUMBER := 1;
428 REQST_CHASINGREFS CONSTANT NUMBER := 2;
429 REQST_NOTCONNECTED CONSTANT NUMBER := 3;
430 REQST_WRITING CONSTANT NUMBER := 4;
431
432 -- structure representing an ldap connection
433 DEREF_NEVER CONSTANT NUMBER := 0;
434 DEREF_SEARCHING CONSTANT NUMBER := 1;
435 DEREF_FINDING CONSTANT NUMBER := 2;
436 DEREF_ALWAYS CONSTANT NUMBER := 3;
437
438 -- types for ldap URL handling
439 URL_ERR_NOTLDAP CONSTANT NUMBER := 1; -- URL doesn't begin with "ldap
440 URL_ERR_NODN CONSTANT NUMBER := 2; -- URL has no DN (required)
441 URL_ERR_BADSCOPE CONSTANT NUMBER := 3; -- URL scope string is invalid
442 URL_ERR_MEM CONSTANT NUMBER := 4; -- can't allocate memory space
443
444 -- types for session info
445 TYPE_ADD_INFO CONSTANT NUMBER := 1;
446
447
448 --
449 -- possible error codes we can return from LDAP server
450 --
451 SUCCESS CONSTANT NUMBER := 0;
452 OPERATIONS_ERROR CONSTANT NUMBER := 1;
453 PROTOCOL_ERROR CONSTANT NUMBER := 2;
454 TIMELIMIT_EXCEEDED CONSTANT NUMBER := 3;
455 SIZELIMIT_EXCEEDED CONSTANT NUMBER := 4;
456 COMPARE_FALSE CONSTANT NUMBER := 5;
457 COMPARE_TRUE CONSTANT NUMBER := 6;
458 STRONG_AUTH_NOT_SUPPORTED CONSTANT NUMBER := 7;
459 STRONG_AUTH_REQUIRED CONSTANT NUMBER := 8;
460 PARTIAL_RESULTS CONSTANT NUMBER := 9;
461 REFERRAL CONSTANT NUMBER := 10;
462 ADMINLIMIT_EXCEEDED CONSTANT NUMBER := 11;
463 UNAVAILABLE_CRITIC CONSTANT NUMBER := 12;
464
465 NO_SUCH_ATTRIBUTE CONSTANT NUMBER := 16;
466 UNDEFINED_TYPE CONSTANT NUMBER := 17;
467 INAPPROPRIATE_MATCHING CONSTANT NUMBER := 18;
468 CONSTRAINT_VIOLATION CONSTANT NUMBER := 19;
469 TYPE_OR_VALUE_EXISTS CONSTANT NUMBER := 20;
470 INVALID_SYNTAX CONSTANT NUMBER := 21;
471
472 NO_SUCH_OBJECT CONSTANT NUMBER := 32;
473 ALIAS_PROBLEM CONSTANT NUMBER := 33;
474 INVALID_DN_SYNTAX CONSTANT NUMBER := 34;
475 IS_LEAF CONSTANT NUMBER := 35;
476 ALIAS_DEREF_PROBLEM CONSTANT NUMBER := 36;
477
478 INAPPROPRIATE_AUTH CONSTANT NUMBER := 48;
479 INVALID_CREDENTIALS CONSTANT NUMBER := 49;
480 INSUFFICIENT_ACCESS CONSTANT NUMBER := 50;
484 LOOP_DETECT CONSTANT NUMBER := 54;
481 BUSY CONSTANT NUMBER := 51;
482 UNAVAILABLE CONSTANT NUMBER := 52;
483 UNWILLING_TO_PERFORM CONSTANT NUMBER := 53;
485
486 NAMING_VIOLATION CONSTANT NUMBER := 64;
487 OBJECT_CLASS_VIOLATION CONSTANT NUMBER := 65;
488 NOT_ALLOWED_ON_NONLEAF CONSTANT NUMBER := 66;
489 NOT_ALLOWED_ON_RDN CONSTANT NUMBER := 67;
490 ALREADY_EXISTS CONSTANT NUMBER := 68;
491 NO_OBJECT_CLASS_MODS CONSTANT NUMBER := 69;
492 RESULTS_TOO_LARGE CONSTANT NUMBER := 70;
493
494 OTHER CONSTANT NUMBER := 80;
495 SERVER_DOWN CONSTANT NUMBER := 81;
496 LOCAL_ERROR CONSTANT NUMBER := 82;
497 ENCODING_ERROR CONSTANT NUMBER := 83;
498 DECODING_ERROR CONSTANT NUMBER := 84;
499 TIMEOUT CONSTANT NUMBER := 85;
500 AUTH_UNKNOWN CONSTANT NUMBER := 86;
501 FILTER_ERROR CONSTANT NUMBER := 87;
502 USER_CANCELLED CONSTANT NUMBER := 88;
503 PARAM_ERROR CONSTANT NUMBER := 89;
504 NO_MEMORY CONSTANT NUMBER := 90;
505
506
507 --
508 -- possible error codes we can return from LDAP client
509 --
510 INVALID_LDAP_SESSION CONSTANT NUMBER := 1024;
511 INVALID_LDAP_AUTH_METHOD CONSTANT NUMBER := 1025;
512 INVALID_LDAP_SEARCH_SCOPE CONSTANT NUMBER := 1026;
513 INVALID_LDAP_TIME_VALUE CONSTANT NUMBER := 1027;
514 INVALID_LDAP_MESSAGE CONSTANT NUMBER := 1027;
515 INVALID_LDAP_ENTRY_DN CONSTANT NUMBER := 1028;
516 INVALID_LDAPMOD CONSTANT NUMBER := 1029;
517 INVALID_LDAP_DN CONSTANT NUMBER := 1030;
518 INVALID_LDAP_NEWRDN CONSTANT NUMBER := 1031;
519 INVALID_LDAP_NEWPARENT CONSTANT NUMBER := 1032;
520 INVALID_LDAP_DELETEOLDRDN CONSTANT NUMBER := 1033;
521 INVALID_SSLWRL CONSTANT NUMBER := 1034;
522 INVALID_SSLWALLETPASSWD CONSTANT NUMBER := 1035;
523 INVALID_SSLAUTH CONSTANT NUMBER := 1036;
524
525
526
527 --
528 -- LDAP SERVER exception definitions
529 --
530
531 -- LDAP general error
532 general_error EXCEPTION;
533 PRAGMA EXCEPTION_INIT(general_error, -31202);
534
535 -- LDAP Init Failed
536 init_failed EXCEPTION;
537 PRAGMA EXCEPTION_INIT(init_failed, -31203);
538
539 -- Invalid LDAP Session
540 invalid_session EXCEPTION;
541 PRAGMA EXCEPTION_INIT(invalid_session, -31204);
542
543 -- Invalid LDAP Auth method
544 invalid_auth_method EXCEPTION;
545 PRAGMA EXCEPTION_INIT(invalid_auth_method, -31205);
546
547 -- Invalid LDAP search scope
548 invalid_search_scope EXCEPTION;
549 PRAGMA EXCEPTION_INIT(invalid_search_scope, -31206);
550
551 -- Invalid LDAP search time value
552 invalid_search_time_val EXCEPTION;
553 PRAGMA EXCEPTION_INIT(invalid_search_time_val, -31207);
554
555 -- Invalid LDAP Message
556 invalid_message EXCEPTION;
557 PRAGMA EXCEPTION_INIT(invalid_message, -31208);
558
559 -- LDAP count_entry error
560 count_entry_error EXCEPTION;
561 PRAGMA EXCEPTION_INIT(count_entry_error, -31209);
562
563 -- LDAP get_dn error
564 get_dn_error EXCEPTION;
565 PRAGMA EXCEPTION_INIT(get_dn_error, -31210);
566
567 -- Invalid LDAP entry dn
568 invalid_entry_dn EXCEPTION;
569 PRAGMA EXCEPTION_INIT(invalid_entry_dn, -31211);
570
571 -- Invalid LDAP mod_array
572 invalid_mod_array EXCEPTION;
573 PRAGMA EXCEPTION_INIT(invalid_mod_array, -31212);
574
575 -- Invalid LDAP mod option
576 invalid_mod_option EXCEPTION;
577 PRAGMA EXCEPTION_INIT(invalid_mod_option, -31213);
578
579 -- Invalid LDAP mod type
580 invalid_mod_type EXCEPTION;
581 PRAGMA EXCEPTION_INIT(invalid_mod_type, -31214);
582
583 -- Invalid LDAP mod value
584 invalid_mod_value EXCEPTION;
585 PRAGMA EXCEPTION_INIT(invalid_mod_value, -31215);
586
587 -- Invalid LDAP rdn
588 invalid_rdn EXCEPTION;
589 PRAGMA EXCEPTION_INIT(invalid_rdn, -31216);
590
591 -- Invalid LDAP newparent
592 invalid_newparent EXCEPTION;
593 PRAGMA EXCEPTION_INIT(invalid_newparent, -31217);
594
595 -- Invalid LDAP deleteoldrdn
596 invalid_deleteoldrdn EXCEPTION;
597 PRAGMA EXCEPTION_INIT(invalid_deleteoldrdn, -31218);
598
599 -- Invalid LDAP notypes
600 invalid_notypes EXCEPTION;
601 PRAGMA EXCEPTION_INIT(invalid_notypes, -31219);
602
603 -- Invalid LDAP SSL wallet location
604 invalid_ssl_wallet_loc EXCEPTION;
605 PRAGMA EXCEPTION_INIT(invalid_ssl_wallet_loc, -31220);
606
607 -- Invalid LDAP SSL wallet passwd
608 invalid_ssl_wallet_passwd EXCEPTION;
609 PRAGMA EXCEPTION_INIT(invalid_ssl_wallet_passwd, -31221);
610
611 -- Invalid LDAP SSL authentication mode
612 invalid_ssl_auth_mode EXCEPTION;
613 PRAGMA EXCEPTION_INIT(invalid_ssl_auth_mode, -31222);
614
615 -- Not supporting MTS mode
616 mts_mode_not_supported EXCEPTION;
617 PRAGMA EXCEPTION_INIT(mts_mode_not_supported, -31398);
618
619 END DBMS_LDAP;