14: procedure set_call(call_Handle CALL);
15: function output_values(call_Handle CALL) return VARCHAR2;
16:
17: function split_string(s VARCHAR2) RETURN QNAME_LIST;
18: function get_any(ch VARCHAR2) RETURN ANYDATA;
19: function get_char RETURN VARCHAR2;
20: function get_number RETURN NUMBER;
21: function get_raw RETURN RAW;
22: function get_date RETURN DATE;
35: function get_bfile RETURN BFILE;
36: function get_rowid RETURN ROWID;
37: function get_xmltype RETURN XMLTYPE;
38:
39: procedure set_any(obj ANYDATA);
40: procedure set_null;
41: procedure set_null(c VARCHAR2);
42: procedure set_char(c VARCHAR2);
43: procedure set_number(n NUMBER);
363: -- interaction mode.
364: -- callHandle - the instance of the call
365: -- inputParams - The input parameters for this invocation.
366: -- Returns the return value or null.
367: function invoke(call_Handle CALL, input_Params ANYDATA_LIST) return ANYDATA
368: IS
369: idx BINARY_INTEGER;
370: BEGIN
371: set_call(call_Handle);
406:
407: -- Obtain the output arguments after a call invocation
408: -- callHandle - the instance of the call
409: -- Returns the output arguments in order.
410: function get_output_values(call_Handle CALL) return ANYDATA_LIST
411: IS
412: res ANYDATA_LIST;
413: len INTEGER;
414: cnt INTEGER;
408: -- callHandle - the instance of the call
409: -- Returns the output arguments in order.
410: function get_output_values(call_Handle CALL) return ANYDATA_LIST
411: IS
412: res ANYDATA_LIST;
413: len INTEGER;
414: cnt INTEGER;
415: outs VARCHAR2(4096);
416: ch VARCHAR2(1);
426: end loop;
427: return res;
428: END get_output_values;
429:
430: function get_any(ch VARCHAR2) RETURN ANYDATA IS
431: BEGIN
432: if (ch = null) OR (ch = 'Z')
433: then return NULL;
434: elsif ch = 'N'
431: BEGIN
432: if (ch = null) OR (ch = 'Z')
433: then return NULL;
434: elsif ch = 'N'
435: then return ANYDATA.ConvertNumber(get_number());
436: elsif ch = 'C'
437: then return ANYDATA.ConvertVarchar2(get_char());
438: elsif ch = 'D'
439: then return ANYDATA.ConvertDate(get_date());
433: then return NULL;
434: elsif ch = 'N'
435: then return ANYDATA.ConvertNumber(get_number());
436: elsif ch = 'C'
437: then return ANYDATA.ConvertVarchar2(get_char());
438: elsif ch = 'D'
439: then return ANYDATA.ConvertDate(get_date());
440: elsif ch = 'R'
441: then return ANYDATA.ConvertRaw(get_raw());
435: then return ANYDATA.ConvertNumber(get_number());
436: elsif ch = 'C'
437: then return ANYDATA.ConvertVarchar2(get_char());
438: elsif ch = 'D'
439: then return ANYDATA.ConvertDate(get_date());
440: elsif ch = 'R'
441: then return ANYDATA.ConvertRaw(get_raw());
442: elsif ch = 'B'
443: then return ANYDATA.ConvertBlob(get_blob());
437: then return ANYDATA.ConvertVarchar2(get_char());
438: elsif ch = 'D'
439: then return ANYDATA.ConvertDate(get_date());
440: elsif ch = 'R'
441: then return ANYDATA.ConvertRaw(get_raw());
442: elsif ch = 'B'
443: then return ANYDATA.ConvertBlob(get_blob());
444: elsif ch = 'L'
445: then return ANYDATA.ConvertClob(get_clob());
439: then return ANYDATA.ConvertDate(get_date());
440: elsif ch = 'R'
441: then return ANYDATA.ConvertRaw(get_raw());
442: elsif ch = 'B'
443: then return ANYDATA.ConvertBlob(get_blob());
444: elsif ch = 'L'
445: then return ANYDATA.ConvertClob(get_clob());
446: elsif ch = 'F'
447: then return ANYDATA.ConvertBfile(get_bfile());
441: then return ANYDATA.ConvertRaw(get_raw());
442: elsif ch = 'B'
443: then return ANYDATA.ConvertBlob(get_blob());
444: elsif ch = 'L'
445: then return ANYDATA.ConvertClob(get_clob());
446: elsif ch = 'F'
447: then return ANYDATA.ConvertBfile(get_bfile());
448:
449: elsif ch = 'Y'
443: then return ANYDATA.ConvertBlob(get_blob());
444: elsif ch = 'L'
445: then return ANYDATA.ConvertClob(get_clob());
446: elsif ch = 'F'
447: then return ANYDATA.ConvertBfile(get_bfile());
448:
449: elsif ch = 'Y'
450: then return ANYDATA.ConvertNumber(get_byte());
451: elsif ch = 'S'
446: elsif ch = 'F'
447: then return ANYDATA.ConvertBfile(get_bfile());
448:
449: elsif ch = 'Y'
450: then return ANYDATA.ConvertNumber(get_byte());
451: elsif ch = 'S'
452: then return ANYDATA.ConvertNumber(get_short());
453: elsif ch = 'I'
454: then return ANYDATA.ConvertNumber(get_integer());
448:
449: elsif ch = 'Y'
450: then return ANYDATA.ConvertNumber(get_byte());
451: elsif ch = 'S'
452: then return ANYDATA.ConvertNumber(get_short());
453: elsif ch = 'I'
454: then return ANYDATA.ConvertNumber(get_integer());
455: elsif ch = 'G'
456: then return ANYDATA.ConvertNumber(get_long());
450: then return ANYDATA.ConvertNumber(get_byte());
451: elsif ch = 'S'
452: then return ANYDATA.ConvertNumber(get_short());
453: elsif ch = 'I'
454: then return ANYDATA.ConvertNumber(get_integer());
455: elsif ch = 'G'
456: then return ANYDATA.ConvertNumber(get_long());
457: elsif ch = 'O'
458: then return ANYDATA.ConvertNumber(get_float());
452: then return ANYDATA.ConvertNumber(get_short());
453: elsif ch = 'I'
454: then return ANYDATA.ConvertNumber(get_integer());
455: elsif ch = 'G'
456: then return ANYDATA.ConvertNumber(get_long());
457: elsif ch = 'O'
458: then return ANYDATA.ConvertNumber(get_float());
459: elsif ch = 'P'
460: then return ANYDATA.ConvertNumber(get_double());
454: then return ANYDATA.ConvertNumber(get_integer());
455: elsif ch = 'G'
456: then return ANYDATA.ConvertNumber(get_long());
457: elsif ch = 'O'
458: then return ANYDATA.ConvertNumber(get_float());
459: elsif ch = 'P'
460: then return ANYDATA.ConvertNumber(get_double());
461:
462: /*
456: then return ANYDATA.ConvertNumber(get_long());
457: elsif ch = 'O'
458: then return ANYDATA.ConvertNumber(get_float());
459: elsif ch = 'P'
460: then return ANYDATA.ConvertNumber(get_double());
461:
462: /*
463: elsif ch = 'O'
464: then return ANYDATA.ConvertObject(get_object());
460: then return ANYDATA.ConvertNumber(get_double());
461:
462: /*
463: elsif ch = 'O'
464: then return ANYDATA.ConvertObject(get_object());
465: elsif ch = '^'
466: then return ANYDATA.ConvertRef(get_ref());
467: elsif ch = '@'
468: then return ANYDATA.ConvertCollection(get_collection());
462: /*
463: elsif ch = 'O'
464: then return ANYDATA.ConvertObject(get_object());
465: elsif ch = '^'
466: then return ANYDATA.ConvertRef(get_ref());
467: elsif ch = '@'
468: then return ANYDATA.ConvertCollection(get_collection());
469: */
470: end if;
464: then return ANYDATA.ConvertObject(get_object());
465: elsif ch = '^'
466: then return ANYDATA.ConvertRef(get_ref());
467: elsif ch = '@'
468: then return ANYDATA.ConvertCollection(get_collection());
469: */
470: end if;
471:
472: return NULL; -- Should throw an exception?!
471:
472: return NULL; -- Should throw an exception?!
473: END get_any;
474:
475: procedure set_any(obj ANYDATA) IS
476: nr NUMBER;
477: v2 VARCHAR2(32767);
478: de DATE;
479: rw RAW(32767);