📄 plgdoir.spb
字号:
c_delim ||
PLGbool.stg (setcontext, c_truefalse) ||
c_delim ||
successval ||
c_delim ||
failureval ||
c_delim ||
failuremsg;
RETURN retval;
END;
PROCEDURE setpsexc (
drv IN VARCHAR2,
tab IN VARCHAR2,
raisemech IN VARCHAR2 := NULL,
handlemech IN VARCHAR2 := NULL,
sch IN VARCHAR2 := NULL
)
IS
v_rowval PLGadmin.dbmaxvc2;
BEGIN
--plvlog.put_line (tab || '-' || raisemech || '-' || handlemech || '-' || sch);
/* Pack up all the information and stuff into row. Same order of data as in record. */
v_rowval :=
packed_excinfo (
c_psexc,
NVL (raisemech, alias (drv, tab, plgalias (c_psraise), sch => sch)),
NVL (handlemech, alias (drv, tab, plgalias (c_pshandle), sch => sch)),
NULL,
alias (drv, tab, plgalias (c_successval), sch => sch),
alias (drv, tab, plgalias (c_failureval), sch => sch),
alias (drv, tab, plgalias (c_failuremsg), sch => sch)
);
multitabset (
drv,
tab,
c_exchdlg,
v_rowval,
1,
sch,
convert_val => FALSE,
remove_conflicts => c_plvexc || ',' || c_retcd
);
END;
PROCEDURE setplvexc (
drv IN VARCHAR2,
tab IN VARCHAR2,
raisemech IN VARCHAR2 := NULL,
handlemech IN VARCHAR2 := NULL,
setcontext IN BOOLEAN := FALSE,
sch IN VARCHAR2 := NULL
)
IS
v_rowval PLGadmin.dbmaxvc2;
BEGIN
/* Pack up all the information and stuff into row.
Same order of data as in record. */
v_rowval :=
packed_excinfo (
c_plvexc,
NVL (raisemech, alias (drv, tab, plgalias (c_plvraise), sch => sch)),
NVL (handlemech, alias (drv, tab, plgalias (c_plvhandle), sch => sch)),
setcontext,
alias (drv, tab, plgalias (c_successval), sch => sch),
alias (drv, tab, plgalias (c_failureval), sch => sch),
alias (drv, tab, plgalias (c_failuremsg), sch => sch)
);
multitabset (
drv,
tab,
c_exchdlg,
v_rowval,
1,
sch,
convert_val => FALSE,
remove_conflicts => c_psexc || ',' || c_retcd
);
END;
PROCEDURE setretcd (
drv IN VARCHAR2,
tab IN VARCHAR2,
raisemech IN VARCHAR2 := NULL,
handlemech IN VARCHAR2 := NULL,
successval IN VARCHAR2 := 0,
failureval IN VARCHAR2 := NULL,
/* = SQLCODE */
failuremsg IN VARCHAR2 := NULL,
/* = SQLERRM */
sch IN VARCHAR2 := NULL
)
IS
v_rowval PLGadmin.dbmaxvc2;
BEGIN
/* Pack up all the information and stuff into row.
Same order of data as in record. */
v_rowval :=
packed_excinfo (
c_retcd,
NVL (raisemech, alias (drv, tab, plgalias (c_rcraise), sch => sch)),
NVL (handlemech, alias (drv, tab, plgalias (c_rchandle), sch => sch)),
NULL,
NVL (successval, alias (drv, tab, plgalias (c_successval), sch => sch)),
NVL (failureval, alias (drv, tab, plgalias (c_failureval), sch => sch)),
NVL (failuremsg, alias (drv, tab, plgalias (c_failuremsg), sch => sch))
);
multitabset (
drv,
tab,
c_exchdlg,
v_rowval,
1,
sch,
convert_val => FALSE,
remove_conflicts => c_psexc || ',' || c_plvexc
);
END;
PROCEDURE usexmn (drv IN VARCHAR2, tab IN VARCHAR2, sch IN VARCHAR2 := NULL)
IS
BEGIN
setactive (drv, tab, c_usingxmn, sch);
END;
PROCEDURE nousexmn (
drv IN VARCHAR2,
tab IN VARCHAR2,
sch IN VARCHAR2 := NULL
)
IS
BEGIN
setinactive (drv, tab, c_usingxmn, sch);
END;
/* Column-level information */
PROCEDURE hidecol (
drv IN VARCHAR2,
tab IN VARCHAR2,
col IN VARCHAR2,
sch IN VARCHAR2 := NULL
)
IS
BEGIN
ins (drv, sch, tab, c_table, col, c_column, c_hidden, 1, c_true);
END;
PROCEDURE nohidecol (
drv IN VARCHAR2,
tab IN VARCHAR2,
col IN VARCHAR2,
sch IN VARCHAR2 := NULL
)
IS
BEGIN
ins (drv, sch, tab, c_table, col, c_column, c_hidden, 1, c_false);
END;
PROCEDURE updatecol (
drv IN VARCHAR2,
tab IN VARCHAR2,
col IN VARCHAR2,
sch IN VARCHAR2 := NULL
)
IS
BEGIN
ins (drv, sch, tab, c_table, col, c_column, c_updcol, 1, c_true);
END;
PROCEDURE noupdatecol (
drv IN VARCHAR2,
tab IN VARCHAR2,
col IN VARCHAR2,
sch IN VARCHAR2 := NULL
)
IS
BEGIN
ins (drv, sch, tab, c_table, col, c_column, c_updcol, 1, c_false);
END;
PROCEDURE setcolfunc (
drv IN VARCHAR2,
tab IN VARCHAR2,
col IN VARCHAR2,
func IN PLG_doir.info%TYPE,
sch IN VARCHAR2 := NULL
)
IS
BEGIN
ins (drv, sch, tab, c_table, col, c_column, c_colfunc, 1, func);
END;
/* Enable SELECT FOR UPDATE option */
PROCEDURE setsfu (
drv IN VARCHAR2,
tab IN VARCHAR2,
sfucols IN VARCHAR2 := 'FOR UPDATE',
dontwait IN BOOLEAN := FALSE,
sch IN VARCHAR2 := NULL
)
IS
v_sfu PLGadmin.dbmaxvc2;
BEGIN
IF UPPER (v_sfu) NOT LIKE 'FOR UPDATE%'
THEN
v_sfu := 'FOR UPDATE OF ' || sfucols;
END IF;
IF dontwait
THEN
v_sfu := v_sfu || ' NOWAIT';
END IF;
multitabset (drv, tab, c_sfu, v_sfu, 1, sch, convert_val => FALSE);
END;
FUNCTION sfu (drv IN VARCHAR2, tab IN VARCHAR2, sch IN VARCHAR2 := NULL)
RETURN VARCHAR2
IS
BEGIN
RETURN tabinfo (drv, tab, c_sfu, sch => sch);
END;
/* Cursor definitions */
FUNCTION maxcurseq (
drv IN VARCHAR2,
tab IN VARCHAR2,
sch IN VARCHAR2 := NULL
)
RETURN INTEGER
IS
CURSOR seq_cur
IS
SELECT MAX (infoseq) maxseq
FROM PLG_doir
WHERE driver = UPPER (drv)
AND owner = UPPER (NVL (sch, g_schema))
AND objname = UPPER (tab)
AND objtype = c_table
AND infotype = c_curinfo;
retval PLS_INTEGER;
BEGIN
OPEN seq_cur;
FETCH seq_cur INTO retval;
RETURN retval;
END;
PROCEDURE setcurinfo (
drv IN VARCHAR2,
tab IN VARCHAR2,
cur IN VARCHAR2,
collist IN VARCHAR2,
sch IN VARCHAR2 := NULL
)
IS
v_seq PLG_doir.infoseq%TYPE;
BEGIN
PLGpriv.assert (tab, sch, PLGpriv.modobj);
v_seq := NVL (maxcurseq (drv, tab, sch), 0) + 1;
multitabset (
drv,
tab,
c_curinfo,
cur || c_delim || collist,
v_seq,
sch,
convert_val => FALSE
);
END;
FUNCTION curinfo (drv IN VARCHAR2, tab IN VARCHAR2, sch IN VARCHAR2 := NULL)
RETURN curinfo_tabtype
IS
retval curinfo_tabtype;
BEGIN
FOR rec IN curinfo_cur (drv, sch, tab)
LOOP
retval (curinfo_cur%rowcount).curname := rec.curname;
retval (curinfo_cur%rowcount).collist := rec.collist;
retval (curinfo_cur%rowcount).objid := rec.objid;
END LOOP;
RETURN retval;
END;
PROCEDURE setalias (
drv IN VARCHAR2,
tab IN VARCHAR2,
orig IN VARCHAR2,
subst IN VARCHAR2,
descrip IN VARCHAR2,
aliastype IN VARCHAR2,
ident_query IN VARCHAR2,
ident_list IN VARCHAR2,
sch IN VARCHAR2 := NULL
)
IS
v_ident PLGadmin.dbmaxvc2;
BEGIN
IF aliastype = c_ident_alias
THEN
v_ident := ident_query || c_delim || ident_list;
ELSE
v_ident := c_global;
END IF;
ins (
drv,
sch,
objname_in => tab,
objtype_in => c_alias,
attrname_in => orig,
attrtype_in => UPPER (NVL (aliastype, c_misc_alias)),
infotype_in => v_ident,
seq_in => 1,
info_in => subst,
doc_in => descrip
);
END;
PROCEDURE setalias (
drv IN VARCHAR2,
tab IN VARCHAR2,
orig IN VARCHAR2,
subst IN VARCHAR2,
sch IN VARCHAR2 := NULL
)
IS
BEGIN
setalias (drv, tab, orig, subst, NULL, c_misc_alias, NULL, NULL, sch);
END;
PROCEDURE setPLGalias (
drv IN VARCHAR2,
tab IN VARCHAR2,
orig IN VARCHAR2,
subst IN VARCHAR2,
descrip IN VARCHAR2,
aliastype IN VARCHAR2,
ident_query IN VARCHAR2,
ident_list IN VARCHAR2,
sch IN VARCHAR2 := NULL
)
IS
BEGIN
PLGpriv.assert (c_global, c_global, PLGpriv.moddrv);
setalias (drv,
tab, plgalias || orig, subst, descrip,
aliastype, ident_query, ident_list, sch);
END;
PROCEDURE set_global_alias (
drv IN VARCHAR2,
orig IN VARCHAR2,
subst IN VARCHAR2,
descrip IN VARCHAR2 := NULL,
aliastype IN VARCHAR2 := NULL,
ident_query IN VARCHAR2 := NULL,
ident_list IN VARCHAR2 := NULL
)
IS
BEGIN
PLGpriv.assert (c_global, c_global, PLGpriv.moddrv);
setalias (
drv,
c_global,
plgalias || orig,
subst,
descrip,
aliastype,
NULL,
NULL,
sch => c_global
);
END;
PROCEDURE set_cust_alias (
drv IN VARCHAR2,
orig IN VARCHAR2,
subst IN VARCHAR2,
descrip IN VARCHAR2 := NULL
)
IS
BEGIN
PLGpriv.assert (c_global, c_global, PLGpriv.moddrv);
setalias (
drv,
c_global,
orig,
subst,
descrip,
c_cust_alias,
NULL,
NULL,
sch => c_global
);
END;
PROCEDURE set_ident (
drv IN VARCHAR2,
orig IN VARCHAR2,
subst IN VARCHAR2,
descrip IN VARCHAR2 := NULL
)
IS
BEGIN
setPLGalias (
drv,
c_global,
orig,
subst,
descrip,
c_ident_alias,
NULL,
NULL,
sch => c_global
);
END;
PROCEDURE set_tag (
drv IN VARCHAR2,
tag IN VARCHAR2,
xmpl IN VARCHAR2 := NULL,
descrip IN VARCHAR2 := NULL,
otag IN VARCHAR2 := NULL,
ctag IN VARCHAR2 := NULL
)
IS
v_tag PLGadmin.identifier
:= RTRIM (LTRIM (tag, otag), ctag);
BEGIN
setalias (
drv,
c_tag_alias,
v_tag,
xmpl,
descrip,
c_tag_alias,
NULL,
NULL,
sch => c_global
);
END;
FUNCTION is_tag (
drv IN VARCHAR2,
nm IN VARCHAR2,
otag IN VARCHAR2 := NULL,
ctag IN VARCHAR2 := NULL
)
RETURN BOOLEAN
IS
BEGIN
RETURN tag_descrip (drv, nm, otag, ctag) IS NOT NULL;
END;
FUNCTION tag_descrip (
drv IN VARCHAR2,
nm IN VARCHAR2,
otag IN VARCHAR2 := NULL,
ctag IN VARCHAR2 := NULL
)
RETURN VARCHAR2
IS
v_nm PLGadmin.identifier
:= RTRIM (LTRIM (nm, otag), ctag);
BEGIN
RETURN alias_descrip (drv, c_tag_alias, v_nm, PLGdoir.c_global);
END;
FUNCTION tag_example (
drv IN VARCHAR2,
nm IN VARCHAR2,
otag IN VARCHAR2 := NULL,
ctag IN VARCHAR2 := NULL
)
RETURN VARCHAR2
IS
v_nm PLGadmin.identifier
:= RTRIM (LTRIM (nm, otag), ctag);
BEGIN
RETURN alias (drv, c_tag_alias, v_nm, PLGdoir.c_global);
END;
PROCEDURE set_colident (
drv IN VARCHAR2,
orig IN VARCHAR2,
subst IN VARCHAR2,
descrip IN VARCHAR2 := NULL,
override IN VARCHAR2 := NULL
)
IS
BEGIN
setPLGalias (
drv,
c_global,
orig,
subst,
descrip,
c_ident_alias,
'SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS ' ||
' WHERE OWNER=:schema AND TABLE_NAME LIKE UPPER (:objname)',
NVL (override, 'colname'),
sch => c_global
);
END;
PROCEDURE set_objident (
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -