📄 plgplsql.spb
字号:
PROCEDURE set_composite_return
(prog IN VARCHAR2,
compname IN VARCHAR2,
sch IN VARCHAR2 := NULL)
IS
BEGIN
set_composite (prog, c_return, compname, sch);
END;
FUNCTION composite
(prog IN VARCHAR2,
argname IN VARCHAR2,
sch IN VARCHAR2 := NULL)
RETURN VARCHAR2
IS
BEGIN
RETURN
NVL (PLGdoir.colval (driver, prog, argname, c_composite, 1, sch => sch),
argname);
END;
FUNCTION composite_return
(prog IN VARCHAR2,
sch IN VARCHAR2 := NULL)
RETURN VARCHAR2
IS
BEGIN
RETURN composite (prog, c_return, sch);
END;
PROCEDURE set_composite
(pkg IN VARCHAR2,
prog IN VARCHAR2,
ovrload IN INTEGER,
argname IN VARCHAR2,
compname IN VARCHAR2,
sch IN VARCHAR2 := NULL)
IS
BEGIN
PLGdoir.ins (driver,
sch, pkg || '.' || prog, PLGdoir.c_table, argname,
PLGdoir.c_column, c_composite, NVL(ovrload, 0), compname);
END;
PROCEDURE set_composite_return
(pkg IN VARCHAR2,
prog IN VARCHAR2,
ovrload IN INTEGER,
compname IN VARCHAR2,
sch IN VARCHAR2 := NULL)
IS
BEGIN
set_composite (pkg, prog, ovrload, c_return, compname, sch);
END;
FUNCTION composite
(pkg IN VARCHAR2,
prog IN VARCHAR2,
ovrload IN INTEGER,
argname IN VARCHAR2,
sch IN VARCHAR2 := NULL)
RETURN VARCHAR2
IS
BEGIN
RETURN
NVL (PLGdoir.colval (
driver, pkg || '.' || prog, argname, c_composite, NVL (ovrload, 0), sch => sch),
argname);
END;
FUNCTION composite_return
(pkg IN VARCHAR2,
prog IN VARCHAR2,
ovrload IN INTEGER,
sch IN VARCHAR2 := NULL)
RETURN VARCHAR2
IS
BEGIN
RETURN composite (pkg, prog, ovrload, c_return, sch);
END;
PROCEDURE setconvtype
(prog IN VARCHAR2,
orig_type IN VARCHAR2,
convert_to IN VARCHAR2,
sch IN VARCHAR2 := NULL)
IS
BEGIN
PLGdoir.ins (driver,
sch, prog, PLGdoir.c_table, orig_type,
PLGdoir.c_column, c_converted_type, 1, convert_to);
END;
FUNCTION convtype
(prog IN VARCHAR2,
orig_type IN VARCHAR2,
sch IN VARCHAR2 := NULL,
fullval IN BOOLEAN := FALSE)
RETURN VARCHAR2
IS
v_loc PLS_INTEGER;
retval PLGadmin.dbmaxvc2;
BEGIN
retval := PLGdoir.colval (driver, prog, orig_type, c_converted_type, 1, sch => sch);
v_loc := INSTR (retval, c_delim);
IF v_loc > 0 AND NOT fullval
THEN
retval := PLGstr.betwn (retval, 1, v_loc-1);
END IF;
RETURN NVL (retval, orig_type);
END;
PROCEDURE setboolconv
(prog IN VARCHAR2,
convert_type IN VARCHAR2,
trueval IN VARCHAR2,
falseval IN VARCHAR2,
sch IN VARCHAR2 := NULL)
IS
BEGIN
setconvtype (prog, 'BOOLEAN', convert_type || c_delim || trueval || c_delim || falseval, sch);
END;
FUNCTION boolconvtype
(prog IN VARCHAR2,
sch IN VARCHAR2 := NULL)
RETURN VARCHAR2
IS
retval PLGadmin.dbmaxvc2;
BEGIN
retval := convtype (prog, 'BOOLEAN', sch, fullval => TRUE);
IF retval IS NOT NULL
THEN
retval := PLGstr.betwn (retval, 1, INSTR (retval, c_delim)-1);
END IF;
RETURN NVL (retval, 'BOOLEAN');
END;
FUNCTION booltrueval
(prog IN VARCHAR2,
sch IN VARCHAR2 := NULL)
RETURN VARCHAR2
IS
retval PLGadmin.dbmaxvc2;
BEGIN
retval := convtype (prog, 'BOOLEAN', sch, fullval => TRUE);
IF retval IS NOT NULL
THEN
retval := PLGstr.betwn (retval, INSTR (retval, c_delim)+1, INSTR (retval, c_delim, 1, 2)-1);
END IF;
RETURN NVL (retval, 'TRUE');
END;
FUNCTION boolfalseval
(prog IN VARCHAR2,
sch IN VARCHAR2 := NULL)
RETURN VARCHAR2
IS
retval PLGadmin.dbmaxvc2;
BEGIN
retval := convtype (prog, 'BOOLEAN', sch, fullval => TRUE);
IF retval IS NOT NULL
THEN
retval := SUBSTR (retval, INSTR (retval, c_delim, 1, 2)+1);
END IF;
RETURN NVL (retval, 'FALSE');
END;
FUNCTION fromplsql_val (sch IN VARCHAR2, prog IN VARCHAR2, argname IN VARCHAR2, dtype IN INTEGER)
RETURN VARCHAR2
/* Converts a PL/SQL datatype to the converted type. */
IS
retval PLGadmin.dbmaxvc2 := argname;
BEGIN
IF dtype = PLGdesc.c_boolean
THEN
IF boolconvtype (prog, sch) != 'BOOLEAN'
THEN
retval := 'ifelse(' || argname ||
',' || booltrueval (prog, sch) ||
',' || boolfalseval (prog, sch) ||
')';
END IF;
END IF;
RETURN retval;
END;
FUNCTION toplsql_val (
sch IN VARCHAR2,
prog IN VARCHAR2,
argname IN VARCHAR2,
dtype IN INTEGER)
RETURN VARCHAR2
/* Converts a non PL/SQL datatype to the PL/SQL type. */
IS
retval PLGadmin.dbmaxvc2 := argname;
BEGIN
IF dtype = PLGdesc.c_boolean
THEN
IF boolconvtype (prog, sch) != 'BOOLEAN'
THEN
retval := argname || '=' || booltrueval (prog, sch);
END IF;
END IF;
RETURN retval;
END;
PROCEDURE set_ibtab_conversion (
pkg IN VARCHAR2,
prog IN VARCHAR2,
ovrload IN INTEGER,
argname IN VARCHAR2,
convtype IN INTEGER, /* delimited or fixed length */
itemdelim IN VARCHAR2 :=NULL,
segdelim IN VARCHAR2 := NULL,
sch IN VARCHAR2 := NULL)
IS
BEGIN
PLGdoir.ins (driver,
sch, pkg || '.' || prog, PLGdoir.c_table, argname,
PLGdoir.c_column, c_ibtab_conv, NVL(ovrload, 0),
convtype || c_delim || itemdelim || c_delim || segdelim);
END;
FUNCTION ibtab_conv (
pkg IN VARCHAR2,
prog IN VARCHAR2,
ovrload IN INTEGER,
argname IN VARCHAR2,
sch IN VARCHAR2 := NULL)
RETURN VARCHAR2
IS
BEGIN
RETURN
NVL (PLGdoir.colval (
driver, pkg || '.' || prog, argname, c_ibtab_conv, NVL (ovrload, 0), sch => sch),
argname);
END;
FUNCTION ibtab_convtype (
pkg IN VARCHAR2,
prog IN VARCHAR2,
ovrload IN INTEGER,
argname IN VARCHAR2,
sch IN VARCHAR2 := NULL)
RETURN INTEGER
IS
v_conv PLG_doir.info%TYPE;
BEGIN
v_conv := ibtab_conv (pkg, prog, ovrload, argname, sch);
RETURN PLGstr.betwn (v_conv, c_delim, c_delim, 0, inclusive => FALSE);
END;
FUNCTION ibtab_itemdelim (
pkg IN VARCHAR2,
prog IN VARCHAR2,
ovrload IN INTEGER,
argname IN VARCHAR2,
sch IN VARCHAR2 := NULL)
RETURN VARCHAR2
IS
v_conv PLG_doir.info%TYPE;
BEGIN
v_conv := ibtab_conv (pkg, prog, ovrload, argname, sch);
RETURN PLGstr.betwn (v_conv, c_delim, c_delim, 1, inclusive=>FALSE);
END;
FUNCTION ibtab_segdelim (
pkg IN VARCHAR2,
prog IN VARCHAR2,
ovrload IN INTEGER,
argname IN VARCHAR2,
sch IN VARCHAR2 := NULL)
RETURN VARCHAR2
IS
v_conv PLG_doir.info%TYPE;
BEGIN
v_conv := ibtab_conv (pkg, prog, ovrload, argname, sch);
RETURN PLGstr.betwn (v_conv, c_delim, c_delim, 2, inclusive=>FALSE, gotoend=>TRUE);
END;
END PLGplsql;
/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -